History

implementation for WelsSleep on WP8.0 https://rbcommons.com/s/OpenH264/r/1315/

Sijia Chen committed 11 years ago

Commit ade32f51 parent a3f606e2 files · +24 −1Browse files

Showing the changes to codec/common/src/WelsThreadLib.cpp (1 of 2 files). Show all

Unified · Split

codec/common/src/WelsThreadLib.cpp+23−1
@@ -71,6 +71,7 @@ · 70 unmodified lines
71 71
72#ifdef WINAPI_FAMILY72#ifdef WINAPI_FAMILY
73#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)73#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
74#define WP80
74using namespace Platform;75using namespace Platform;
75using namespace Windows::Foundation;76using namespace Windows::Foundation;
76using namespace Windows::System::Threading;77using namespace Windows::System::Threading;
@@ -174,9 +175,30 @@ WELS_THREAD_ERROR_CODE WelsEventClose (WELS_EVENT* event, const char* event_n · 97 unmodified lines
174 return WELS_THREAD_ERROR_OK;175 return WELS_THREAD_ERROR_OK;
175}176}
176 177
178#ifndef WP80
177void WelsSleep (uint32_t dwMilliSecond) {179void WelsSleep (uint32_t dwMilliSecond) {
178 ::Sleep (dwMilliSecond);180 ::Sleep (dwMilliSecond);
179}181}
182#else
183void WelsSleep (uint32_t dwMilliSecond) {
184 static WELS_EVENT hSleepEvent = NULL;
185 if (!hSleepEvent) {
186 WELS_EVENT hLocalSleepEvent = NULL;
187 WELS_THREAD_ERROR_CODE ret = WelsEventOpen (&hLocalSleepEvent);
188 if (WELS_THREAD_ERROR_OK != ret) {
189 return;
190 }
191 WELS_EVENT hPreviousEvent = InterlockedCompareExchangePointerRelease (&hSleepEvent, hLocalSleepEvent, NULL);
192 if (hPreviousEvent) {
193 WelsEventClose (&hLocalSleepEvent);
194 }
195 //On this singleton usage idea of using InterlockedCompareExchangePointerRelease:
196 // similar idea of can be found at msdn blog when introducing InterlockedCompareExchangePointerRelease
197 }
198
199 WaitForSingleObject (hSleepEvent, dwMilliSecond);
200}
201#endif
180 202
181WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_THREAD_ROUTINE routine,203WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_THREAD_ROUTINE routine,
182 void* arg, WELS_THREAD_ATTR attr) {204 void* arg, WELS_THREAD_ATTR attr) {
@@ -229,7 +251,7 @@ WELS_THREAD_ERROR_CODE WelsQueryLogicalProcessInfo (WelsLogicalProcessInfo* p · 46 unmodified lines
229 return WELS_THREAD_ERROR_OK;251 return WELS_THREAD_ERROR_OK;
230}252}
231 253
232#else254#else //platform: #ifdef _WIN32
233 255
234WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_THREAD_ROUTINE routine,256WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_THREAD_ROUTINE routine,
235 void* arg, WELS_THREAD_ATTR attr) {257 void* arg, WELS_THREAD_ATTR attr) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t