[Bf-blender-cvs] [aebeb85fe01] master: Windows: Clean-up win 8/8.1 API use

Ray Molenkamp noreply at git.blender.org
Mon May 31 16:57:02 CEST 2021


Commit: aebeb85fe013a671f71f47d6f210c192598f408f
Author: Ray Molenkamp
Date:   Mon May 31 08:56:57 2021 -0600
Branches: master
https://developer.blender.org/rBaebeb85fe013a671f71f47d6f210c192598f408f

Windows: Clean-up win 8/8.1 API use

For 2.93 we bumped the minimum windows requirement
to windows 8.1, but did not do any clean-up of any
win 8/8.1 API usage we dynamically accessed though
LoadLibrary/GetProcAddress.

This patch bumps _WIN32_WINNT to 0x0603 (win 8.1)
and cleans up any API use that was accessed in a
more convoluted way than necessary

Differential Revision: https://developer.blender.org/D11331

Reviewed by: harley, nicholas_rishel

===================================================================

M	build_files/cmake/platform/platform_win32.cmake
M	intern/ghost/intern/GHOST_SystemWin32.cpp
M	intern/ghost/intern/GHOST_WindowWin32.cpp
M	intern/ghost/intern/GHOST_WindowWin32.h
M	release/windows/manifest/blender.exe.manifest.in

===================================================================

diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake
index b6ec016aa95..497fd179aaf 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -119,7 +119,7 @@ string(APPEND CMAKE_MODULE_LINKER_FLAGS " /SAFESEH:NO /ignore:4099")
 list(APPEND PLATFORM_LINKLIBS
   ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 Comctl32 version
   advapi32 shfolder shell32 ole32 oleaut32 uuid psapi Dbghelp Shlwapi
-  pathcch
+  pathcch Shcore
 )
 
 if(WITH_INPUT_IME)
@@ -144,8 +144,8 @@ add_definitions(-D_ALLOW_KEYWORD_MACROS)
 # that both /GR and /GR- are specified.
 remove_cc_flag("/GR")
 
-# We want to support Windows 7 level ABI
-add_definitions(-D_WIN32_WINNT=0x601)
+# Make the Windows 8.1 API available for use.
+add_definitions(-D_WIN32_WINNT=0x603)
 include(build_files/cmake/platform/platform_win32_bundle_crt.cmake)
 remove_cc_flag("/MDd" "/MD" "/Zi")
 
diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp
index 38dea9c1142..fc3cb81e26a 100644
--- a/intern/ghost/intern/GHOST_SystemWin32.cpp
+++ b/intern/ghost/intern/GHOST_SystemWin32.cpp
@@ -32,6 +32,7 @@
 #include <commctrl.h>
 #include <psapi.h>
 #include <shellapi.h>
+#include <shellscalingapi.h>
 #include <shlobj.h>
 #include <tlhelp32.h>
 #include <windowsx.h>
@@ -97,41 +98,6 @@
 #  define VK_GR_LESS 0xE2
 #endif  // VK_GR_LESS
 
-#ifndef VK_MEDIA_NEXT_TRACK
-#  define VK_MEDIA_NEXT_TRACK 0xB0
-#endif  // VK_MEDIA_NEXT_TRACK
-#ifndef VK_MEDIA_PREV_TRACK
-#  define VK_MEDIA_PREV_TRACK 0xB1
-#endif  // VK_MEDIA_PREV_TRACK
-#ifndef VK_MEDIA_STOP
-#  define VK_MEDIA_STOP 0xB2
-#endif  // VK_MEDIA_STOP
-#ifndef VK_MEDIA_PLAY_PAUSE
-#  define VK_MEDIA_PLAY_PAUSE 0xB3
-#endif  // VK_MEDIA_PLAY_PAUSE
-
-// Window message newer than Windows 7
-#ifndef WM_DPICHANGED
-#  define WM_DPICHANGED 0x02E0
-#endif  // WM_DPICHANGED
-
-// WM_POINTER API messages minimum Windows 7
-#ifndef WM_POINTERENTER
-#  define WM_POINTERENTER 0x0249
-#endif  // WM_POINTERENTER
-#ifndef WM_POINTERDOWN
-#  define WM_POINTERDOWN 0x0246
-#endif  // WM_POINTERDOWN
-#ifndef WM_POINTERUPDATE
-#  define WM_POINTERUPDATE 0x0245
-#endif  // WM_POINTERUPDATE
-#ifndef WM_POINTERUP
-#  define WM_POINTERUP 0x0247
-#endif  // WM_POINTERUP
-#ifndef WM_POINTERLEAVE
-#  define WM_POINTERLEAVE 0x024A
-#endif  // WM_POINTERLEAVE
-
 /* Workaround for some laptop touchpads, some of which seems to
  * have driver issues which makes it so window function receives
  * the message, but PeekMessage doesn't pick those messages for
@@ -173,24 +139,6 @@ static void initRawInput()
 #undef DEVICE_COUNT
 }
 
-#ifndef DPI_ENUMS_DECLARED
-typedef enum PROCESS_DPI_AWARENESS {
-  PROCESS_DPI_UNAWARE = 0,
-  PROCESS_SYSTEM_DPI_AWARE = 1,
-  PROCESS_PER_MONITOR_DPI_AWARE = 2
-} PROCESS_DPI_AWARENESS;
-
-typedef enum MONITOR_DPI_TYPE {
-  MDT_EFFECTIVE_DPI = 0,
-  MDT_ANGULAR_DPI = 1,
-  MDT_RAW_DPI = 2,
-  MDT_DEFAULT = MDT_EFFECTIVE_DPI
-} MONITOR_DPI_TYPE;
-
-#  define USER_DEFAULT_SCREEN_DPI 96
-
-#  define DPI_ENUMS_DECLARED
-#endif
 typedef HRESULT(API *GHOST_WIN32_SetProcessDpiAwareness)(PROCESS_DPI_AWARENESS);
 typedef BOOL(API *GHOST_WIN32_EnableNonClientDpiScaling)(HWND);
 
@@ -205,15 +153,7 @@ GHOST_SystemWin32::GHOST_SystemWin32()
 
   // Tell Windows we are per monitor DPI aware. This disables the default
   // blurry scaling and enables WM_DPICHANGED to allow us to draw at proper DPI.
-  HMODULE m_shcore = ::LoadLibrary("Shcore.dll");
-  if (m_shcore) {
-    GHOST_WIN32_SetProcessDpiAwareness fpSetProcessDpiAwareness =
-        (GHOST_WIN32_SetProcessDpiAwareness)::GetProcAddress(m_shcore, "SetProcessDpiAwareness");
-
-    if (fpSetProcessDpiAwareness) {
-      fpSetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
-    }
-  }
+  SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
 
   // Check if current keyboard layout uses AltGr and save keylayout ID for
   // specialized handling if keys like VK_OEM_*. I.e. french keylayout
@@ -581,14 +521,7 @@ GHOST_TSuccess GHOST_SystemWin32::init()
   InitCommonControls();
 
   /* Disable scaling on high DPI displays on Vista */
-  HMODULE
-  user32 = ::LoadLibraryA("user32.dll");
-  typedef BOOL(WINAPI * LPFNSETPROCESSDPIAWARE)();
-  LPFNSETPROCESSDPIAWARE SetProcessDPIAware = (LPFNSETPROCESSDPIAWARE)GetProcAddress(
-      user32, "SetProcessDPIAware");
-  if (SetProcessDPIAware)
-    SetProcessDPIAware();
-  FreeLibrary(user32);
+  SetProcessDPIAware();
   initRawInput();
 
   m_lfstart = ::GetTickCount();
diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp
index 3af92153e8b..eeafe333633 100644
--- a/intern/ghost/intern/GHOST_WindowWin32.cpp
+++ b/intern/ghost/intern/GHOST_WindowWin32.cpp
@@ -84,9 +84,6 @@ GHOST_WindowWin32::GHOST_WindowWin32(GHOST_SystemWin32 *system,
       m_wantAlphaBackground(alphaBackground),
       m_normal_state(GHOST_kWindowStateNormal),
       m_user32(NULL),
-      m_fpGetPointerInfoHistory(NULL),
-      m_fpGetPointerPenInfoHistory(NULL),
-      m_fpGetPointerTouchInfoHistory(NULL),
       m_parentWindowHwnd(parentwindow ? parentwindow->m_hWnd : HWND_DESKTOP),
       m_debug_context(is_debug)
 {
@@ -153,19 +150,7 @@ GHOST_WindowWin32::GHOST_WindowWin32(GHOST_SystemWin32 *system,
   m_user32 = ::LoadLibrary("user32.dll");
 
   if (m_hWnd) {
-    if (m_user32) {
-      // Touch enabled screens with pen support by default have gestures
-      // enabled, which results in a delay between the pointer down event
-      // and the first move when using the stylus. RegisterTouchWindow
-      // disables the new gesture architecture enabling the events to be
-      // sent immediately to the application rather than being absorbed by
-      // the gesture API.
-      GHOST_WIN32_RegisterTouchWindow pRegisterTouchWindow = (GHOST_WIN32_RegisterTouchWindow)
-          GetProcAddress(m_user32, "RegisterTouchWindow");
-      if (pRegisterTouchWindow) {
-        pRegisterTouchWindow(m_hWnd, 0);
-      }
-    }
+    RegisterTouchWindow(m_hWnd, 0);
 
     // Register this window as a droptarget. Requires m_hWnd to be valid.
     // Note that OleInitialize(0) has to be called prior to this. Done in GHOST_SystemWin32.
@@ -232,16 +217,6 @@ GHOST_WindowWin32::GHOST_WindowWin32(GHOST_SystemWin32 *system,
     }
   }
 
-  // Initialize Windows Ink
-  if (m_user32) {
-    m_fpGetPointerInfoHistory = (GHOST_WIN32_GetPointerInfoHistory)::GetProcAddress(
-        m_user32, "GetPointerInfoHistory");
-    m_fpGetPointerPenInfoHistory = (GHOST_WIN32_GetPointerPenInfoHistory)::GetProcAddress(
-        m_user32, "GetPointerPenInfoHistory");
-    m_fpGetPointerTouchInfoHistory = (GHOST_WIN32_GetPointerTouchInfoHistory)::GetProcAddress(
-        m_user32, "GetPointerTouchInfoHistory");
-  }
-
   // Initialize Wintab
   m_wintab.handle = ::LoadLibrary("Wintab32.dll");
   if (m_wintab.handle && m_system->getTabletAPI() != GHOST_kTabletNative) {
@@ -326,9 +301,6 @@ GHOST_WindowWin32::~GHOST_WindowWin32()
   if (m_user32) {
     FreeLibrary(m_user32);
     m_user32 = NULL;
-    m_fpGetPointerInfoHistory = NULL;
-    m_fpGetPointerPenInfoHistory = NULL;
-    m_fpGetPointerTouchInfoHistory = NULL;
   }
 
   if (m_customCursor) {
@@ -950,15 +922,14 @@ GHOST_TSuccess GHOST_WindowWin32::getPointerInfo(
   GHOST_SystemWin32 *system = (GHOST_SystemWin32 *)GHOST_System::getSystem();
   GHOST_TUns32 outCount;
 
-  if (!(m_fpGetPointerInfoHistory && m_fpGetPointerInfoHistory(pointerId, &outCount, NULL))) {
+  if (!(GetPointerInfoHistory(pointerId, &outCount, NULL))) {
     return GHOST_kFailure;
   }
 
   auto pointerPenInfo = std::vector<POINTER_PEN_INFO>(outCount);
   outPointerInfo.resize(outCount);
 
-  if (!(m_fpGetPointerPenInfoHistory &&
-        m_fpGetPointerPenInfoHistory(pointerId, &outCount, pointerPenInfo.data()))) {
+  if (!(GetPointerPenInfoHistory(pointerId, &outCount, pointerPenInfo.data()))) {
     return GHOST_kFailure;
   }
 
diff --git a/intern/ghost/intern/GHOST_WindowWin32.h b/intern/ghost/intern/GHOST_WindowWin32.h
index b004f7e7b19..a13bd876667 100644
--- a/intern/ghost/intern/GHOST_WindowWin32.h
+++ b/intern/ghost/intern/GHOST_WindowWin32.h
@@ -53,177 +53,12 @@ typedef BOOL(API *GHOST_WIN32_WTPacket)(HCTX, UINT, LPVOID);
 typedef BOOL(API *GHOST_WIN32_WTEnable)(HCTX, BOOL);
 typedef BOOL(API *GHOST_WIN32_WTOverlap)(HCTX, BOOL);
 
-// typedef to user32 functions to disable gestures on windows
-typedef BOOL(API *GHOST_WIN32_RegisterTouchWindow)(HWND hwnd, ULONG ulFlags);
-
 // typedefs for user32 functions to allow dynamic loading of Windows 10 DPI scaling functions
 typedef UINT(API *GHOST_WIN32_GetDpiForWindow)(HWND);
 #ifndef USER_DEFAULT_SCREEN_DPI
 #  define USER_DEFAULT_SCREEN_DPI 96
 #endif  // USER_DEFAULT_SCREEN_DPI
 
-// typedefs for user32 functions to allow pointer functions
-enum tagPOINTER_INPUT_TYPE {
-  PT_POINTER = 1,  // Generic pointer
-  PT_TOUCH = 2,    // Touch
-  PT_PEN = 3,      // Pen
-  PT_MOUSE = 4,    // Mouse
-#if (WINVER >= 0x0603)
-  PT_TOUCHPAD = 5,  // Touchpad
-#endif              /* WINVER >= 0x0603 */
-};
-
-typedef enum tagPOINTER_BUTTON_CHANGE_TYPE {
-  POINTER_CHANGE_NONE,
-  POINTER_CHANGE_FIRSTBUTTON_DOWN,
-  POINTER_CHANGE_FIRSTBUTTON_UP,
-  POINTER_CHANGE_SECONDBUTTON_DOWN,
-  POINTER_CHANGE_SECONDBUTTON_UP,
-  POINTER_CHANGE_THIRDBUTTON_DOWN,
-  POINTER_CHANGE_THIRDBUTTON_UP,
-  POINTER_CHANGE_FOURTHBUTTON_DOWN,
-  POINTER_CHANGE_FOURTHBUTTON_UP,
-  POINTER_CHANGE_FIFTHBUTTON_DOWN,
-  POINTER_CHANGE_FIFTHBUTTON_UP,
-} POINTER_BUTTON_CHANGE_TYPE;
-
-typedef DWORD POINTER_INPUT_TYPE;
-typedef UINT32 POINTER_FLAGS;
-
-#define POINTER_FLAG_NONE 0x00000000
-#define POINTER_FLAG_NEW 0x00000001
-#define POINTER_FLAG_INRANGE 0x00000002
-#define POINTER_FLAG_INCONTACT 0x00000004
-#define POINTER_FLAG_FIRSTBUTTON 0x00000010
-#define POINTER_FLAG_SECONDBUTTON 0x00000020
-#define POINTER_FLAG_THIRDBUTTON 0x00000040
-#define POINTER_FLAG_FOURTHBUTTON 0x00000080
-#define POINTER_FLAG_FIFTHBUTTON 0x00000100
-#define POINTER_FLAG_PRIMARY 0x00002000
-#define POINTER_FLAG_CONFIDENCE 0x000004000
-#define POINTER_FLAG_CANCELED 0x000008000
-#define POINTER_FLAG_DOWN 0x00010000


@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list