From 5e4f290e939ded90a518ff8eab1db59930655e11 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Mon, 7 Dec 2015 13:12:49 -0800 Subject: Revert "Rename CFWL_Thread classes to ThreadImp" This reverts commit 6fa20c60c6ed551af55bfc879668eaac5c237805. Reason for revert: broke tests TBR=thestig@chromium.org Review URL: https://codereview.chromium.org/1507893002 . --- xfa/include/fwl/adapter/fwl_adapterthreadmgr.h | 19 +++- xfa/include/fwl/core/fwl_thread.h | 42 ++++++--- xfa/src/fwl/src/core/fwl_threadimp.cpp | 115 +++++++++++++++++++++++-- xfa/src/fwl/src/core/fwl_widgetimp.cpp | 4 +- xfa/src/fwl/src/core/include/fwl_appimp.h | 15 ++-- xfa/src/fwl/src/core/include/fwl_noteimp.h | 2 +- xfa/src/fwl/src/core/include/fwl_threadimp.h | 25 +++--- xfa/src/fwl/src/core/include/fwl_widgetimp.h | 6 +- xfa/src/fxfa/src/app/xfa_fwladapter.cpp | 3 + 9 files changed, 180 insertions(+), 51 deletions(-) diff --git a/xfa/include/fwl/adapter/fwl_adapterthreadmgr.h b/xfa/include/fwl/adapter/fwl_adapterthreadmgr.h index 570e53349a..12b155db90 100644 --- a/xfa/include/fwl/adapter/fwl_adapterthreadmgr.h +++ b/xfa/include/fwl/adapter/fwl_adapterthreadmgr.h @@ -4,10 +4,11 @@ // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com -#ifndef FWL_ADAPTERTHREADMGR_H_ -#define FWL_ADAPTERTHREADMGR_H_ - +#ifndef _FWL_ADAPTER_THREAD_H +#define _FWL_ADAPTER_THREAD_H class IFWL_Thread; +class IFWL_AdapterMutex; +class IFWL_AdapterSemaphore; class IFWL_AdapterThreadMgr { public: @@ -21,4 +22,14 @@ class IFWL_AdapterThreadMgr { virtual FWL_ERR Stop(FWL_HTHREAD hThread, int32_t iExitCode) = 0; virtual IFWL_Thread* GetCurrentThread() = 0; }; -#endif // FWL_ADAPTERTHREADMGR_H_ +class IFWL_AdapterSemaphore { + public: + virtual ~IFWL_AdapterSemaphore() {} + static IFWL_AdapterSemaphore* Create(); + virtual FWL_ERR Destroy() = 0; + virtual FWL_ERR Wait() const = 0; + virtual FWL_ERR Post() = 0; + virtual FWL_ERR Value(FX_DWORD& val) const = 0; + virtual FWL_ERR Reset(int32_t init) = 0; +}; +#endif diff --git a/xfa/include/fwl/core/fwl_thread.h b/xfa/include/fwl/core/fwl_thread.h index f8ea2aa104..3bc5c3c289 100644 --- a/xfa/include/fwl/core/fwl_thread.h +++ b/xfa/include/fwl/core/fwl_thread.h @@ -4,25 +4,47 @@ // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com -#ifndef FWL_THREAD_H_ -#define FWL_THREAD_H_ - +#ifndef _FWL_THREAD_H +#define _FWL_THREAD_H class IFWL_NoteDriver; - +class IFWL_Thread; +class IFWL_NoteThread; typedef struct _FWL_HTHREAD { void* pData; } * FWL_HTHREAD; - class IFWL_Thread { public: - virtual void Release() = 0; - virtual FWL_ERR Run(FWL_HTHREAD hThread) = 0; + static IFWL_Thread* Create(); protected: virtual ~IFWL_Thread() {} -}; + public: + virtual void Release() = 0; + virtual FWL_ERR Run(FWL_HTHREAD hThread) = 0; +}; +FWL_HTHREAD FWL_StartThread(IFWL_Thread* pThread, FX_BOOL bSuspended = FALSE); +FWL_ERR FWL_ResumeThread(FWL_HTHREAD hThread); +FWL_ERR FWL_SuspendThread(FWL_HTHREAD hThread); +FWL_ERR FWL_KillThread(FWL_HTHREAD hThread, int32_t iExitCode); +FWL_ERR FWL_StopThread(FWL_HTHREAD hThread, int32_t iExitCode); +FWL_ERR FWL_Sleep(FX_DWORD dwMilliseconds); class IFWL_NoteThread : public IFWL_Thread { public: + static IFWL_NoteThread* Create(); + virtual FWL_ERR Run(FWL_HTHREAD hThread) = 0; virtual IFWL_NoteDriver* GetNoteDriver() = 0; }; - -#endif // FWL_THREAD_H_ +typedef struct _FWL_HMUTEX { void* pData; } * FWL_HMUTEX; +FWL_HMUTEX FWL_CreateMutex(); +FWL_ERR FWL_DestroyMutex(FWL_HMUTEX hMutex); +FWL_ERR FWL_LockMutex(FWL_HMUTEX hMutex); +FWL_ERR FWL_TryLockMutex(FWL_HMUTEX hMutex); +FWL_ERR FWL_UnlockMutex(FWL_HMUTEX hMutex); +FWL_ERR FWL_IsLockedMutex(FWL_HMUTEX hMutex, FX_BOOL& bLocked); +typedef struct _FWL_HSEMAPHORE { void* pData; } * FWL_HSEMAPHORE; +FWL_HSEMAPHORE FWL_CreateSemaphore(); +FWL_ERR FWL_DestroySemaphore(FWL_HSEMAPHORE hSemaphore); +FWL_ERR FWL_WaitSemaphore(FWL_HSEMAPHORE hSemaphore); +FWL_ERR FWL_PostSemaphore(FWL_HSEMAPHORE hSemaphore, int32_t down = 1); +FWL_ERR FWL_GetSemaphoreValue(FWL_HSEMAPHORE hSemaphore, int32_t& value); +FWL_ERR FWL_ResetSemaphore(FWL_HSEMAPHORE hSemaphore, int32_t init); +#endif diff --git a/xfa/src/fwl/src/core/fwl_threadimp.cpp b/xfa/src/fwl/src/core/fwl_threadimp.cpp index 2972b2349c..546f14ad74 100644 --- a/xfa/src/fwl/src/core/fwl_threadimp.cpp +++ b/xfa/src/fwl/src/core/fwl_threadimp.cpp @@ -9,22 +9,119 @@ #include "include/fwl_noteimp.h" #include "include/fwl_threadimp.h" #include "include/fwl_appimp.h" -CFWL_ThreadImp::CFWL_ThreadImp() {} -CFWL_ThreadImp::~CFWL_ThreadImp() {} -FWL_ERR CFWL_ThreadImp::Run(FWL_HTHREAD hThread) { +IFWL_Thread* IFWL_Thread::Create() { + return (IFWL_Thread*)new CFWL_Thread; +} +CFWL_Thread::CFWL_Thread() {} +CFWL_Thread::~CFWL_Thread() {} +FWL_ERR CFWL_Thread::Run(FWL_HTHREAD hThread) { return FWL_ERR_Succeeded; } -CFWL_NoteThreadImp::CFWL_NoteThreadImp() { +IFWL_NoteThread* IFWL_NoteThread::Create() { + return (IFWL_NoteThread*)new CFWL_NoteThread; +} +CFWL_NoteThread::CFWL_NoteThread() : m_hThread(NULL) { m_pNoteDriver = new CFWL_NoteDriver; } -CFWL_NoteThreadImp::~CFWL_NoteThreadImp() { - delete m_pNoteDriver; +CFWL_NoteThread::~CFWL_NoteThread() { + if (m_hThread) { + FWL_StopThread(m_hThread, 0); + } + if (m_pNoteDriver) { + delete m_pNoteDriver; + m_pNoteDriver = NULL; + } } -FWL_ERR CFWL_NoteThreadImp::Run(FWL_HTHREAD hThread) { +FWL_ERR CFWL_NoteThread::Run(FWL_HTHREAD hThread) { if (!m_pNoteDriver) return FWL_ERR_Indefinite; - return m_pNoteDriver->Run(); + FWL_ERR result = m_pNoteDriver->Run(); + return result; } -IFWL_NoteDriver* CFWL_NoteThreadImp::GetNoteDriver() { +IFWL_NoteDriver* CFWL_NoteThread::GetNoteDriver() { return (IFWL_NoteDriver*)m_pNoteDriver; } +extern IFWL_AdapterNative* FWL_GetAdapterNative(); +FWL_HTHREAD FWL_StartThread(IFWL_Thread* pThread, FX_BOOL bSuspended) { + IFWL_AdapterNative* pNative = FWL_GetAdapterNative(); + if (!pNative) + return NULL; + IFWL_AdapterThreadMgr* pThreadMgr = pNative->GetThreadMgr(); + if (!pThreadMgr) + return NULL; + FWL_HTHREAD hThread = NULL; + pThreadMgr->Start(pThread, hThread, bSuspended); + return hThread; +} +FWL_ERR FWL_ResumeThread(FWL_HTHREAD hThread) { + IFWL_AdapterNative* Native = FWL_GetAdapterNative(); + if (!Native) + return FWL_ERR_Indefinite; + IFWL_AdapterThreadMgr* ThreadMgr = Native->GetThreadMgr(); + if (!ThreadMgr) + return FWL_ERR_Indefinite; + return ThreadMgr->Resume(hThread); +} +FWL_ERR FWL_SuspendThread(FWL_HTHREAD hThread) { + IFWL_AdapterNative* Native = FWL_GetAdapterNative(); + if (!Native) + return FWL_ERR_Indefinite; + IFWL_AdapterThreadMgr* ThreadMgr = Native->GetThreadMgr(); + if (!ThreadMgr) + return FWL_ERR_Indefinite; + return ThreadMgr->Suspend(hThread); +} +FWL_ERR FWL_KillThread(FWL_HTHREAD hThread, int32_t iExitCode) { + IFWL_AdapterNative* Native = FWL_GetAdapterNative(); + if (!Native) + return FWL_ERR_Indefinite; + IFWL_AdapterThreadMgr* ThreadMgr = Native->GetThreadMgr(); + if (!ThreadMgr) + return FWL_ERR_Indefinite; + return ThreadMgr->Kill(hThread, iExitCode); +} +FWL_ERR FWL_StopThread(FWL_HTHREAD hThread, int32_t iExitCode) { + IFWL_AdapterNative* Native = FWL_GetAdapterNative(); + if (!Native) + return FWL_ERR_Indefinite; + IFWL_AdapterThreadMgr* ThreadMgr = Native->GetThreadMgr(); + if (!ThreadMgr) + return FWL_ERR_Indefinite; + return ThreadMgr->Stop(hThread, iExitCode); +} +FWL_HMUTEX FWL_CreateMutex() { + return NULL; +} +FWL_ERR FWL_DestroyMutex(FWL_HMUTEX hMutex) { + return FWL_ERR_Succeeded; +} +FWL_ERR FWL_LockMutex(FWL_HMUTEX hMutex) { + return FWL_ERR_Succeeded; +} +FWL_ERR FWL_TryLockMutex(FWL_HMUTEX hMutex) { + return FWL_ERR_Succeeded; +} +FWL_ERR FWL_UnlockMutex(FWL_HMUTEX hMutex) { + return FWL_ERR_Succeeded; +} +FWL_ERR FWL_IsLockedMutex(FWL_HMUTEX hMutex, FX_BOOL& bLocked) { + return FWL_ERR_Succeeded; +} +FWL_HSEMAPHORE FWL_CreateSemaphore() { + return (FWL_HSEMAPHORE)IFWL_AdapterSemaphore::Create(); +} +FWL_ERR FWL_DestroySemaphore(FWL_HSEMAPHORE hSemaphore) { + return ((IFWL_AdapterSemaphore*)hSemaphore)->Destroy(); +} +FWL_ERR FWL_WaitSemaphore(FWL_HSEMAPHORE hSemaphore) { + return ((IFWL_AdapterSemaphore*)hSemaphore)->Wait(); +} +FWL_ERR FWL_PostSemaphore(FWL_HSEMAPHORE hSemaphore, int32_t down) { + return ((IFWL_AdapterSemaphore*)hSemaphore)->Post(); +} +FWL_ERR FWL_GetSemaphoreValue(FWL_HSEMAPHORE hSemaphore, int32_t& value) { + return ((IFWL_AdapterSemaphore*)hSemaphore)->Value((FX_DWORD&)value); +} +FWL_ERR FWL_ResetSemaphore(FWL_HSEMAPHORE hSemaphore, int32_t init) { + return ((IFWL_AdapterSemaphore*)hSemaphore)->Reset(init); +} diff --git a/xfa/src/fwl/src/core/fwl_widgetimp.cpp b/xfa/src/fwl/src/core/fwl_widgetimp.cpp index 135a3e1b80..2e6d5b30ed 100644 --- a/xfa/src/fwl/src/core/fwl_widgetimp.cpp +++ b/xfa/src/fwl/src/core/fwl_widgetimp.cpp @@ -131,7 +131,7 @@ FWL_ERR CFWL_WidgetImp::Initialize() { IFWL_AdapterThreadMgr* pAdapterThread = pAdapter->GetThreadMgr(); if (!pAdapterThread) return FWL_ERR_Indefinite; - SetOwnerThread((CFWL_NoteThreadImp*)pAdapterThread->GetCurrentThread()); + SetOwnerThread((CFWL_NoteThread*)pAdapterThread->GetCurrentThread()); IFWL_Widget* pParent = m_pProperties->m_pParent; m_pWidgetMgr->InsertWidget(pParent, m_pInterface); if (!IsChild()) { @@ -488,7 +488,7 @@ IFWL_WidgetDelegate* CFWL_WidgetImp::SetDelegate( IFWL_NoteThread* CFWL_WidgetImp::GetOwnerThread() const { return (IFWL_NoteThread*)m_pOwnerThread; } -FWL_ERR CFWL_WidgetImp::SetOwnerThread(CFWL_NoteThreadImp* pOwnerThread) { +FWL_ERR CFWL_WidgetImp::SetOwnerThread(CFWL_NoteThread* pOwnerThread) { m_pOwnerThread = pOwnerThread; return FWL_ERR_Succeeded; } diff --git a/xfa/src/fwl/src/core/include/fwl_appimp.h b/xfa/src/fwl/src/core/include/fwl_appimp.h index a0a7cc0fe4..ec23febb32 100644 --- a/xfa/src/fwl/src/core/include/fwl_appimp.h +++ b/xfa/src/fwl/src/core/include/fwl_appimp.h @@ -4,18 +4,16 @@ // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com -#ifndef FWL_APPIMP_H_ -#define FWL_APPIMP_H_ - -#include "xfa/src/fwl/src/core/include/fwl_threadimp.h" - +#ifndef _FWL_APP_IMP_H +#define _FWL_APP_IMP_H +class CFWL_NoteThread; class CFWL_WidgetMgr; class IFWL_AdapterNative; class IFWL_WidgetMgr; class IFWL_ThemeProvider; class IFWL_App; - -class CFWL_AppImp : public CFWL_NoteThreadImp { +class CFWL_AppImp; +class CFWL_AppImp : public CFWL_NoteThread { public: CFWL_AppImp(IFWL_AdapterNative* pAdapter); virtual ~CFWL_AppImp(); @@ -33,5 +31,4 @@ class CFWL_AppImp : public CFWL_NoteThreadImp { IFWL_ThemeProvider* m_pThemeProvider; FX_BOOL m_bFuelAdapter; }; - -#endif // FWL_APPIMP_H_ +#endif diff --git a/xfa/src/fwl/src/core/include/fwl_noteimp.h b/xfa/src/fwl/src/core/include/fwl_noteimp.h index b846d20263..413b0fd034 100644 --- a/xfa/src/fwl/src/core/include/fwl_noteimp.h +++ b/xfa/src/fwl/src/core/include/fwl_noteimp.h @@ -8,7 +8,7 @@ #define _FWL_NOTE_IMP_H class CFWL_TargetImp; class CFWL_WidgetImp; -class CFWL_NoteThreadImp; +class CFWL_NoteThread; class CFWL_ToolTipImp; class IFWL_ToolTipTarget; class CFWL_CoreToopTipDP; diff --git a/xfa/src/fwl/src/core/include/fwl_threadimp.h b/xfa/src/fwl/src/core/include/fwl_threadimp.h index 644f6a3678..eb3331f451 100644 --- a/xfa/src/fwl/src/core/include/fwl_threadimp.h +++ b/xfa/src/fwl/src/core/include/fwl_threadimp.h @@ -4,32 +4,31 @@ // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com -#ifndef FWL_THREADIMP_H_ -#define FWL_THREADIMP_H_ +#ifndef _FWL_THREAD_IMP_H +#define _FWL_THREAD_IMP_H #include "xfa/include/fwl/core/fwl_thread.h" // For FWL_HTHREAD. class CFWL_NoteDriver; class IFWL_NoteDriver; -class CFWL_ThreadImp { +class CFWL_Thread { public: - CFWL_ThreadImp(); - virtual ~CFWL_ThreadImp(); - + CFWL_Thread(); + virtual ~CFWL_Thread(); + virtual void Release() { delete this; } virtual FWL_ERR Run(FWL_HTHREAD hThread); }; -class CFWL_NoteThreadImp : public CFWL_ThreadImp { +class CFWL_NoteThread : public CFWL_Thread { public: - CFWL_NoteThreadImp(); - virtual ~CFWL_NoteThreadImp(); - - FWL_ERR Run(FWL_HTHREAD hThread) override; + CFWL_NoteThread(); + virtual ~CFWL_NoteThread(); + virtual FWL_ERR Run(FWL_HTHREAD hThread); virtual IFWL_NoteDriver* GetNoteDriver(); protected: CFWL_NoteDriver* m_pNoteDriver; + FWL_HTHREAD m_hThread; }; - -#endif // FWL_THREADIMP_H_ +#endif diff --git a/xfa/src/fwl/src/core/include/fwl_widgetimp.h b/xfa/src/fwl/src/core/include/fwl_widgetimp.h index 109e575914..949738d6d2 100644 --- a/xfa/src/fwl/src/core/include/fwl_widgetimp.h +++ b/xfa/src/fwl/src/core/include/fwl_widgetimp.h @@ -11,7 +11,7 @@ #include "xfa/src/fwl/src/core/include/fwl_targetimp.h" class CFWL_NoteTarget; -class CFWL_NoteThreadImp; +class CFWL_NoteThread; class CFWL_WidgetImpProperties; class CFWL_WidgetMgr; class IFWL_DataProvider; @@ -60,7 +60,7 @@ class CFWL_WidgetImp : public CFWL_TargetImp { virtual FWL_ERR SetDataProvider(IFWL_DataProvider* pDataProvider); virtual IFWL_WidgetDelegate* SetDelegate(IFWL_WidgetDelegate* pDelegate); virtual IFWL_NoteThread* GetOwnerThread() const; - FWL_ERR SetOwnerThread(CFWL_NoteThreadImp* pOwnerThread); + FWL_ERR SetOwnerThread(CFWL_NoteThread* pOwnerThread); IFWL_Widget* GetInterface() const; void SetInterface(IFWL_Widget* pInterface); CFX_SizeF GetOffsetFromParent(IFWL_Widget* pParent); @@ -137,7 +137,7 @@ class CFWL_WidgetImp : public CFWL_TargetImp { FX_BOOL IsParent(IFWL_Widget* pParent); CFWL_WidgetMgr* m_pWidgetMgr; - CFWL_NoteThreadImp* m_pOwnerThread; + CFWL_NoteThread* m_pOwnerThread; CFWL_WidgetImpProperties* m_pProperties; CFX_PrivateData* m_pPrivateData; IFWL_WidgetDelegate* m_pDelegate; diff --git a/xfa/src/fxfa/src/app/xfa_fwladapter.cpp b/xfa/src/fxfa/src/app/xfa_fwladapter.cpp index 077fa648f3..3c9f1a1556 100644 --- a/xfa/src/fxfa/src/app/xfa_fwladapter.cpp +++ b/xfa/src/fxfa/src/app/xfa_fwladapter.cpp @@ -15,6 +15,9 @@ IFWL_AdapterNative* FWL_CreateFuelAdapterNative() { } void FWL_ReleaseFuelAdapterNative(IFWL_AdapterNative* native) {} void FWL_PostMessageToMainRoop(CFWL_Message* pMessage) {} +IFWL_AdapterSemaphore* IFWL_AdapterSemaphore::Create() { + return NULL; +} FX_BOOL FWL_ShowCaret(IFWL_Widget* pWidget, FX_BOOL bVisible, const CFX_RectF* pRtAnchor) { -- cgit v1.2.3