From 7db326a15b173c0d101adc608bf551a628c65dcd Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sun, 25 Jan 2015 08:13:24 +0400 Subject: [PATCH 1/3] Fix build on WinRT There is no environment (like WinCE) and the basic version of InitializeCriticalSection is unsupported. https://codereview.qt-project.org/#/c/92496/ --- src/hb-mutex-private.hh | 4 ++++ src/hb-private.hh | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/hb-mutex-private.hh b/src/hb-mutex-private.hh index 628120195..a8ea39ccf 100644 --- a/src/hb-mutex-private.hh +++ b/src/hb-mutex-private.hh @@ -47,7 +47,11 @@ #include typedef CRITICAL_SECTION hb_mutex_impl_t; #define HB_MUTEX_IMPL_INIT {0} +#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) +#define hb_mutex_impl_init(M) InitializeCriticalSectionEx (M, 0, 0) +#else #define hb_mutex_impl_init(M) InitializeCriticalSection (M) +#endif #define hb_mutex_impl_lock(M) EnterCriticalSection (M) #define hb_mutex_impl_unlock(M) LeaveCriticalSection (M) #define hb_mutex_impl_finish(M) DeleteCriticalSection (M) diff --git a/src/hb-private.hh b/src/hb-private.hh index c92cdec51..8438fae7a 100644 --- a/src/hb-private.hh +++ b/src/hb-private.hh @@ -142,6 +142,8 @@ #define getenv(Name) NULL #define setlocale(Category, Locale) "C" static int errno = 0; /* Use something better? */ +#elif defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) +#define getenv(Name) NULL #endif #if HAVE_ATEXIT From afb62d88d78cacb6b881aaf329a654fd32f5ae29 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sun, 25 Jan 2015 08:16:26 +0400 Subject: [PATCH 2/3] Do not define MemoryBarrier on WinCE There is a _HBMemoryBarrier() wrapper function that emulates MemoryBarrier() behavior when it is not defined. --- src/hb-private.hh | 1 - 1 file changed, 1 deletion(-) diff --git a/src/hb-private.hh b/src/hb-private.hh index 8438fae7a..c316c01a1 100644 --- a/src/hb-private.hh +++ b/src/hb-private.hh @@ -138,7 +138,6 @@ #ifdef _WIN32_WCE /* Some things not defined on Windows CE. */ -#define MemoryBarrier() #define getenv(Name) NULL #define setlocale(Category, Locale) "C" static int errno = 0; /* Use something better? */ From f3537b620b0a7392ea27f01f465c5ba79459c858 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sun, 25 Jan 2015 09:50:51 +0400 Subject: [PATCH 3/3] Move some code around Just to keep Windows specific workarounds in a single place. --- src/hb-private.hh | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/hb-private.hh b/src/hb-private.hh index c316c01a1..45b7712ce 100644 --- a/src/hb-private.hh +++ b/src/hb-private.hh @@ -94,12 +94,6 @@ # endif #endif -#if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER) -#define snprintf _snprintf -/* Windows CE only has _strdup, while rest of Windows has both. */ -#define strdup _strdup -#endif - #ifdef _MSC_VER #undef inline #define inline __inline @@ -134,15 +128,20 @@ # ifndef STRICT # define STRICT 1 # endif -#endif -#ifdef _WIN32_WCE -/* Some things not defined on Windows CE. */ -#define getenv(Name) NULL -#define setlocale(Category, Locale) "C" +# if defined(_WIN32_WCE) + /* Some things not defined on Windows CE. */ +# define getenv(Name) NULL +# define setlocale(Category, Locale) "C" static int errno = 0; /* Use something better? */ -#elif defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) -#define getenv(Name) NULL +# elif defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) +# define getenv(Name) NULL +# endif +# if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER) +# define snprintf _snprintf + /* Windows CE only has _strdup, while rest of Windows has both. */ +# define strdup _strdup +# endif #endif #if HAVE_ATEXIT