Re: [libav-devel] [PATCH 2/2] compat/w32pthreads: use the condition variable API directly when targeting newer versions of Windows

2014-10-09 Thread Martin Storsjö

On Thu, 9 Oct 2014, James Almer wrote:


Wrap the function calls in a similar fashion to how it's being done
with the critical section API.

Signed-off-by: James Almer 
---
compat/w32pthreads.h | 60 +---
1 file changed, 38 insertions(+), 22 deletions(-)


No more objections from me on this, looks good.

// Martin
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 2/2] compat/w32pthreads: use the condition variable API directly when targeting newer versions of Windows

2014-10-09 Thread Martin Storsjö

On Thu, 9 Oct 2014, James Almer wrote:


On 09/10/14 5:03 AM, Martin Storsjö wrote:

On Wed, 8 Oct 2014, James Almer wrote:


Wrap the function calls in a similar fashion to how it's being done
with the critical section API.

Signed-off-by: James Almer 
---
compat/w32pthreads.h | 63 ++--
1 file changed, 37 insertions(+), 26 deletions(-)

diff --git a/compat/w32pthreads.h b/compat/w32pthreads.h
index b905a95..e586ecb 100644
--- a/compat/w32pthreads.h
+++ b/compat/w32pthreads.h
@@ -64,32 +64,6 @@ typedef struct pthread_cond_t {
} pthread_cond_t;
#endif

-/* function pointers to conditional variable API on windows 6.0+ kernels */
-#if _WIN32_WINNT < 0x0600
-static void (WINAPI *cond_broadcast)(pthread_cond_t *cond);
-static void (WINAPI *cond_init)(pthread_cond_t *cond);
-static void (WINAPI *cond_signal)(pthread_cond_t *cond);
-static BOOL (WINAPI *cond_wait)(pthread_cond_t *cond, pthread_mutex_t *mutex,
-DWORD milliseconds);
-#else
-#define cond_init  InitializeConditionVariable
-#define cond_broadcast WakeAllConditionVariable
-#define cond_signalWakeConditionVariable
-#define cond_wait  SleepConditionVariableCS
-
-#define CreateEvent(a, reset, init, name)   \
-CreateEventEx(a, name,  \
-  (reset ? CREATE_EVENT_MANUAL_RESET : 0) | \
-  (init ? CREATE_EVENT_INITIAL_SET : 0),\
-  EVENT_ALL_ACCESS)
-// CreateSemaphoreExA seems to be desktop-only, but as long as we don't
-// use named semaphores, it doesn't matter if we use the W version.
-#define CreateSemaphore(a, b, c, d) \
-CreateSemaphoreExW(a, b, c, d, 0, SEMAPHORE_ALL_ACCESS)
-#define InitializeCriticalSection(x) InitializeCriticalSectionEx(x, 0, 0)
-#define WaitForSingleObject(a, b) WaitForSingleObjectEx(a, b, FALSE)
-#endif
-


Where did the 
CreateEvent/CreateSemaphore/InitializeCriticalSection/WaitForSingleObject 
definitions go here? When targeting desktop windows they don't matter (since 
the old functions still exist), but when targeting WinRT/WinPhone, the old 
functions are no longer available.


You're right about InitializeCriticalSection and WaitForSingleObject (I somehow 
missed those), but
the redefinition of CreateEvent and CreateSemaphore are not needed anymore 
since they will now be
used only for the non-native version of the condition variable API, which is 
only compiled when
_WIN32_WINT < 0x0600.


Ah, I see.

// Martin
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 2/2] compat/w32pthreads: use the condition variable API directly when targeting newer versions of Windows

2014-10-09 Thread James Almer
On 09/10/14 5:03 AM, Martin Storsjö wrote:
> On Wed, 8 Oct 2014, James Almer wrote:
> 
>> Wrap the function calls in a similar fashion to how it's being done
>> with the critical section API.
>>
>> Signed-off-by: James Almer 
>> ---
>> compat/w32pthreads.h | 63 
>> ++--
>> 1 file changed, 37 insertions(+), 26 deletions(-)
>>
>> diff --git a/compat/w32pthreads.h b/compat/w32pthreads.h
>> index b905a95..e586ecb 100644
>> --- a/compat/w32pthreads.h
>> +++ b/compat/w32pthreads.h
>> @@ -64,32 +64,6 @@ typedef struct pthread_cond_t {
>> } pthread_cond_t;
>> #endif
>>
>> -/* function pointers to conditional variable API on windows 6.0+ kernels */
>> -#if _WIN32_WINNT < 0x0600
>> -static void (WINAPI *cond_broadcast)(pthread_cond_t *cond);
>> -static void (WINAPI *cond_init)(pthread_cond_t *cond);
>> -static void (WINAPI *cond_signal)(pthread_cond_t *cond);
>> -static BOOL (WINAPI *cond_wait)(pthread_cond_t *cond, pthread_mutex_t 
>> *mutex,
>> -DWORD milliseconds);
>> -#else
>> -#define cond_init  InitializeConditionVariable
>> -#define cond_broadcast WakeAllConditionVariable
>> -#define cond_signalWakeConditionVariable
>> -#define cond_wait  SleepConditionVariableCS
>> -
>> -#define CreateEvent(a, reset, init, name)   \
>> -CreateEventEx(a, name,  \
>> -  (reset ? CREATE_EVENT_MANUAL_RESET : 0) | \
>> -  (init ? CREATE_EVENT_INITIAL_SET : 0),\
>> -  EVENT_ALL_ACCESS)
>> -// CreateSemaphoreExA seems to be desktop-only, but as long as we don't
>> -// use named semaphores, it doesn't matter if we use the W version.
>> -#define CreateSemaphore(a, b, c, d) \
>> -CreateSemaphoreExW(a, b, c, d, 0, SEMAPHORE_ALL_ACCESS)
>> -#define InitializeCriticalSection(x) InitializeCriticalSectionEx(x, 0, 0)
>> -#define WaitForSingleObject(a, b) WaitForSingleObjectEx(a, b, FALSE)
>> -#endif
>> -
> 
> Where did the 
> CreateEvent/CreateSemaphore/InitializeCriticalSection/WaitForSingleObject 
> definitions go here? When targeting desktop windows they don't matter (since 
> the old functions still exist), but when targeting WinRT/WinPhone, the old 
> functions are no longer available.

You're right about InitializeCriticalSection and WaitForSingleObject (I somehow 
missed those), but 
the redefinition of CreateEvent and CreateSemaphore are not needed anymore 
since they will now be 
used only for the non-native version of the condition variable API, which is 
only compiled when 
_WIN32_WINT < 0x0600.

I'll send a patch to put the former two back in place.
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 2/2] compat/w32pthreads: use the condition variable API directly when targeting newer versions of Windows

2014-10-09 Thread Martin Storsjö

On Wed, 8 Oct 2014, James Almer wrote:


Wrap the function calls in a similar fashion to how it's being done
with the critical section API.

Signed-off-by: James Almer 
---
compat/w32pthreads.h | 63 ++--
1 file changed, 37 insertions(+), 26 deletions(-)

diff --git a/compat/w32pthreads.h b/compat/w32pthreads.h
index b905a95..e586ecb 100644
--- a/compat/w32pthreads.h
+++ b/compat/w32pthreads.h
@@ -64,32 +64,6 @@ typedef struct pthread_cond_t {
} pthread_cond_t;
#endif

-/* function pointers to conditional variable API on windows 6.0+ kernels */
-#if _WIN32_WINNT < 0x0600
-static void (WINAPI *cond_broadcast)(pthread_cond_t *cond);
-static void (WINAPI *cond_init)(pthread_cond_t *cond);
-static void (WINAPI *cond_signal)(pthread_cond_t *cond);
-static BOOL (WINAPI *cond_wait)(pthread_cond_t *cond, pthread_mutex_t *mutex,
-DWORD milliseconds);
-#else
-#define cond_init  InitializeConditionVariable
-#define cond_broadcast WakeAllConditionVariable
-#define cond_signalWakeConditionVariable
-#define cond_wait  SleepConditionVariableCS
-
-#define CreateEvent(a, reset, init, name)   \
-CreateEventEx(a, name,  \
-  (reset ? CREATE_EVENT_MANUAL_RESET : 0) | \
-  (init ? CREATE_EVENT_INITIAL_SET : 0),\
-  EVENT_ALL_ACCESS)
-// CreateSemaphoreExA seems to be desktop-only, but as long as we don't
-// use named semaphores, it doesn't matter if we use the W version.
-#define CreateSemaphore(a, b, c, d) \
-CreateSemaphoreExW(a, b, c, d, 0, SEMAPHORE_ALL_ACCESS)
-#define InitializeCriticalSection(x) InitializeCriticalSectionEx(x, 0, 0)
-#define WaitForSingleObject(a, b) WaitForSingleObjectEx(a, b, FALSE)
-#endif
-


Where did the 
CreateEvent/CreateSemaphore/InitializeCriticalSection/WaitForSingleObject 
definitions go here? When targeting desktop windows they don't matter 
(since the old functions still exist), but when targeting WinRT/WinPhone, 
the old functions are no longer available.


// Martin
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel