From 2be7e3ddcf3762e52965216f34b49e9a119b9b20 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Wed, 1 Jan 2025 18:26:45 +0100 Subject: [PATCH 1/7] [winpr,library] improve unit test debug output --- .../library/test/TestLibraryGetProcAddress.c | 28 +++++++++++++++---- .../library/test/TestLibraryLoadLibrary.c | 18 +++++++++--- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/winpr/libwinpr/library/test/TestLibraryGetProcAddress.c b/winpr/libwinpr/library/test/TestLibraryGetProcAddress.c index 59085b97e..ccf542167 100644 --- a/winpr/libwinpr/library/test/TestLibraryGetProcAddress.c +++ b/winpr/libwinpr/library/test/TestLibraryGetProcAddress.c @@ -5,6 +5,7 @@ #include #include #include +#include typedef int (*TEST_AB_FN)(int a, int b); @@ -17,13 +18,16 @@ int TestLibraryGetProcAddress(int argc, char* argv[]) TEST_AB_FN pFunctionA = NULL; TEST_AB_FN pFunctionB = NULL; LPCSTR SharedLibraryExtension = NULL; - CHAR LibraryPath[PATHCCH_MAX_CCH]; + CHAR LibraryPath[PATHCCH_MAX_CCH] = { 0 }; PCHAR p = NULL; WINPR_UNUSED(argc); WINPR_UNUSED(argv); if (!GetModuleFileNameA(NULL, LibraryPath, PATHCCH_MAX_CCH)) { - printf("%s: GetModuleFilenameA failed: 0x%08" PRIX32 "\n", __func__, GetLastError()); + const UINT32 err = GetLastError(); + const HRESULT herr = HRESULT_FROM_WIN32(err); + printf("%s: GetModuleFilenameA failed: %s - %s [0x%08" PRIX32 "]\n", __func__, + NtStatus2Tag(herr), Win32ErrorCode2Tag(err), err); return -1; } @@ -43,19 +47,28 @@ int TestLibraryGetProcAddress(int argc, char* argv[]) if (!(library = LoadLibraryA(LibraryPath))) { - printf("%s: LoadLibraryA failure: 0x%08" PRIX32 "\n", __func__, GetLastError()); + const UINT32 err = GetLastError(); + const HRESULT herr = HRESULT_FROM_WIN32(err); + printf("%s: LoadLibraryA failure: %s - %s [0x%08" PRIX32 "]\n", __func__, + NtStatus2Tag(herr), Win32ErrorCode2Tag(err), err); return -1; } if (!(pFunctionA = GetProcAddressAs(library, "FunctionA", TEST_AB_FN))) { - printf("%s: GetProcAddress failure (FunctionA)\n", __func__); + const UINT32 err = GetLastError(); + const HRESULT herr = HRESULT_FROM_WIN32(err); + printf("%s: GetProcAddress failure (FunctionA) %s - %s [0x%08" PRIX32 "]\n", __func__, + NtStatus2Tag(herr), Win32ErrorCode2Tag(err), err); return -1; } if (!(pFunctionB = GetProcAddressAs(library, "FunctionB", TEST_AB_FN))) { - printf("%s: GetProcAddress failure (FunctionB)\n", __func__); + const UINT32 err = GetLastError(); + const HRESULT herr = HRESULT_FROM_WIN32(err); + printf("%s: GetProcAddress failure (FunctionB) %s - %s [0x%08" PRIX32 "]\n", __func__, + NtStatus2Tag(herr), Win32ErrorCode2Tag(err), err); return -1; } @@ -81,7 +94,10 @@ int TestLibraryGetProcAddress(int argc, char* argv[]) if (!FreeLibrary(library)) { - printf("%s: FreeLibrary failure: 0x%08" PRIX32 "\n", __func__, GetLastError()); + const UINT32 err = GetLastError(); + const HRESULT herr = HRESULT_FROM_WIN32(err); + printf("%s: FreeLibrary failure: %s - %s [0x%08" PRIX32 "]\n", __func__, NtStatus2Tag(herr), + Win32ErrorCode2Tag(err), err); return -1; } diff --git a/winpr/libwinpr/library/test/TestLibraryLoadLibrary.c b/winpr/libwinpr/library/test/TestLibraryLoadLibrary.c index 4bd6e7cf7..e9d1c8da9 100644 --- a/winpr/libwinpr/library/test/TestLibraryLoadLibrary.c +++ b/winpr/libwinpr/library/test/TestLibraryLoadLibrary.c @@ -5,18 +5,22 @@ #include #include #include +#include int TestLibraryLoadLibrary(int argc, char* argv[]) { HINSTANCE library = NULL; LPCSTR SharedLibraryExtension = NULL; - CHAR LibraryPath[PATHCCH_MAX_CCH]; + CHAR LibraryPath[PATHCCH_MAX_CCH] = { 0 }; PCHAR p = NULL; WINPR_UNUSED(argc); WINPR_UNUSED(argv); if (!GetModuleFileNameA(NULL, LibraryPath, PATHCCH_MAX_CCH)) { - printf("%s: GetModuleFilenameA failed: 0x%08" PRIX32 "\n", __func__, GetLastError()); + const UINT32 err = GetLastError(); + const HRESULT herr = HRESULT_FROM_WIN32(err); + printf("%s: GetModuleFilenameA failed: %s - %s [0x%08" PRIX32 "]\n", __func__, + NtStatus2Tag(herr), Win32ErrorCode2Tag(err), err); return -1; } @@ -37,13 +41,19 @@ int TestLibraryLoadLibrary(int argc, char* argv[]) if (!(library = LoadLibraryA(LibraryPath))) { - printf("%s: LoadLibraryA failure: 0x%08" PRIX32 "\n", __func__, GetLastError()); + const UINT32 err = GetLastError(); + const HRESULT herr = HRESULT_FROM_WIN32(err); + printf("%s: LoadLibraryA failure: %s - %s [0x%08" PRIX32 "]\n", __func__, + NtStatus2Tag(herr), Win32ErrorCode2Tag(err), err); return -1; } if (!FreeLibrary(library)) { - printf("%s: FreeLibrary failure: 0x%08" PRIX32 "\n", __func__, GetLastError()); + const UINT32 err = GetLastError(); + const HRESULT herr = HRESULT_FROM_WIN32(err); + printf("%s: FreeLibrary failure: %s - %s [0x%08" PRIX32 "]\n", __func__, NtStatus2Tag(herr), + Win32ErrorCode2Tag(err), err); return -1; } From 403e3e62411541ce3178f6c5709241aedd0d409a Mon Sep 17 00:00:00 2001 From: akallabeth Date: Wed, 1 Jan 2025 18:14:05 +0100 Subject: [PATCH 2/7] [winpr,library] fix test dependencies --- winpr/libwinpr/library/test/CMakeLists.txt | 8 +++++--- winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt | 6 ++---- winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt | 5 ++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/winpr/libwinpr/library/test/CMakeLists.txt b/winpr/libwinpr/library/test/CMakeLists.txt index 0e95d87e5..d0c001ad9 100644 --- a/winpr/libwinpr/library/test/CMakeLists.txt +++ b/winpr/libwinpr/library/test/CMakeLists.txt @@ -1,3 +1,6 @@ +add_subdirectory(TestLibraryA) +add_subdirectory(TestLibraryB) + set(MODULE_NAME "TestLibrary") set(MODULE_PREFIX "TEST_LIBRARY") @@ -11,6 +14,8 @@ create_test_sourcelist(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_DRIVER} ${${MODU add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +add_dependencies(${MODULE_NAME} TestLibraryA TestLibraryB) + target_link_libraries(${MODULE_NAME} winpr) set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}") @@ -23,6 +28,3 @@ foreach(test ${${MODULE_PREFIX}_TESTS}) endforeach() set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/Test") - -add_subdirectory(TestLibraryA) -add_subdirectory(TestLibraryB) diff --git a/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt b/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt index 73d8b7e0c..5f72d0eea 100644 --- a/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt +++ b/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt @@ -18,12 +18,10 @@ set(MODULE_NAME "TestLibraryA") set(MODULE_PREFIX "TEST_LIBRARY_A") -set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} TestLibraryA.c) - -add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS}) +set(SRCS TestLibraryA.c) +add_library(${MODULE_NAME} SHARED ${SRCS}) set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") - set_target_properties(${MODULE_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}") set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/Test/Extra") diff --git a/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt b/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt index dbd3e9fbc..dc0788423 100644 --- a/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt +++ b/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt @@ -18,12 +18,11 @@ set(MODULE_NAME "TestLibraryB") set(MODULE_PREFIX "TEST_LIBRARY_B") -set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} TestLibraryB.c) +set(SRCS TestLibraryB.c) -add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS}) +add_library(${MODULE_NAME} SHARED ${SRCS}) set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") - set_target_properties(${MODULE_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}") set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/Test/Extra") From 123c7b198a591ac8ab9fd56e07a399c22ccea8b6 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Wed, 1 Jan 2025 19:45:58 +0100 Subject: [PATCH 3/7] [winpr,library] add RUNTIME_OUTPUT_DIRECTORY windows uses this property instead of LIBRARY_OUTPUT_DIRECTORY to place the dll --- winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt | 5 ++++- winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt b/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt index 5f72d0eea..45bb56383 100644 --- a/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt +++ b/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt @@ -22,6 +22,9 @@ set(SRCS TestLibraryA.c) add_library(${MODULE_NAME} SHARED ${SRCS}) set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") -set_target_properties(${MODULE_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}") +set_target_properties( + ${MODULE_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}" RUNTIME_OUTPUT_DIRECTORY + "${TESTING_OUTPUT_DIRECTORY}" +) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/Test/Extra") diff --git a/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt b/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt index dc0788423..0595336d0 100644 --- a/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt +++ b/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt @@ -23,6 +23,9 @@ set(SRCS TestLibraryB.c) add_library(${MODULE_NAME} SHARED ${SRCS}) set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") -set_target_properties(${MODULE_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}") +set_target_properties( + ${MODULE_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}" RUNTIME_OUTPUT_DIRECTORY + "${TESTING_OUTPUT_DIRECTORY}" +) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/Test/Extra") From c56c80591b3ff29e51c3b2793df11ddd9f0dfbaf Mon Sep 17 00:00:00 2001 From: akallabeth Date: Fri, 31 Jan 2025 14:09:36 +0100 Subject: [PATCH 4/7] [client,sdl] fix warnings --- client/SDL/SDL2/sdl_kbd.cpp | 33 ------------------------------- client/SDL/SDL2/sdl_monitor.cpp | 24 ---------------------- client/SDL/SDL3/sdl_kbd.cpp | 35 --------------------------------- client/SDL/SDL3/sdl_monitor.cpp | 24 ---------------------- 4 files changed, 116 deletions(-) diff --git a/client/SDL/SDL2/sdl_kbd.cpp b/client/SDL/SDL2/sdl_kbd.cpp index 9c3aecf70..6084506cc 100644 --- a/client/SDL/SDL2/sdl_kbd.cpp +++ b/client/SDL/SDL2/sdl_kbd.cpp @@ -416,17 +416,6 @@ uint32_t sdlInput::prefToMask() return mod; } -static const char* sdl_scancode_name(Uint32 scancode) -{ - for (const auto& cur : map) - { - if (cur.sdl == scancode) - return cur.sdl_name; - } - - return "SDL_SCANCODE_UNKNOWN"; -} - static Uint32 sdl_scancode_val(const char* scancodeName) { for (const auto& cur : map) @@ -438,28 +427,6 @@ static Uint32 sdl_scancode_val(const char* scancodeName) return SDL_SCANCODE_UNKNOWN; } -static const char* sdl_rdp_scancode_name(UINT32 scancode) -{ - for (const auto& cur : map) - { - if (cur.rdp == scancode) - return cur.rdp_name; - } - - return "RDP_SCANCODE_UNKNOWN"; -} - -static UINT32 sdl_rdp_scancode_val(const char* scancodeName) -{ - for (const auto& cur : map) - { - if (strcmp(cur.rdp_name, scancodeName) == 0) - return cur.rdp; - } - - return RDP_SCANCODE_UNKNOWN; -} - static UINT32 sdl_scancode_to_rdp(Uint32 scancode) { UINT32 rdp = RDP_SCANCODE_UNKNOWN; diff --git a/client/SDL/SDL2/sdl_monitor.cpp b/client/SDL/SDL2/sdl_monitor.cpp index 57d598153..ca5330d6c 100644 --- a/client/SDL/SDL2/sdl_monitor.cpp +++ b/client/SDL/SDL2/sdl_monitor.cpp @@ -78,30 +78,6 @@ int sdl_list_monitors(SdlContext* sdl) return 0; } -static BOOL sdl_is_monitor_id_active(SdlContext* sdl, UINT32 id) -{ - const rdpSettings* settings = nullptr; - - WINPR_ASSERT(sdl); - - settings = sdl->context()->settings; - WINPR_ASSERT(settings); - - const UINT32 NumMonitorIds = freerdp_settings_get_uint32(settings, FreeRDP_NumMonitorIds); - if (!NumMonitorIds) - return TRUE; - - for (UINT32 index = 0; index < NumMonitorIds; index++) - { - auto cur = static_cast( - freerdp_settings_get_pointer_array(settings, FreeRDP_MonitorIds, index)); - if (cur && (*cur == id)) - return TRUE; - } - - return FALSE; -} - static BOOL sdl_apply_max_size(SdlContext* sdl, UINT32* pMaxWidth, UINT32* pMaxHeight) { WINPR_ASSERT(sdl); diff --git a/client/SDL/SDL3/sdl_kbd.cpp b/client/SDL/SDL3/sdl_kbd.cpp index 8cecd536f..52fa4f9aa 100644 --- a/client/SDL/SDL3/sdl_kbd.cpp +++ b/client/SDL/SDL3/sdl_kbd.cpp @@ -185,7 +185,6 @@ static const scancode_entry_t map[] = { ENTRY(SDL_SCANCODE_AC_FORWARD, RDP_SCANCODE_BROWSER_FORWARD), ENTRY(SDL_SCANCODE_AC_STOP, RDP_SCANCODE_BROWSER_STOP), -#if 1 // TODO: unmapped ENTRY(SDL_SCANCODE_NONUSHASH, RDP_SCANCODE_UNKNOWN), ENTRY(SDL_SCANCODE_APPLICATION, RDP_SCANCODE_UNKNOWN), ENTRY(SDL_SCANCODE_POWER, RDP_SCANCODE_UNKNOWN), @@ -280,7 +279,6 @@ static const scancode_entry_t map[] = { ENTRY(SDL_SCANCODE_MEDIA_EJECT, RDP_SCANCODE_UNKNOWN), ENTRY(SDL_SCANCODE_MEDIA_REWIND, RDP_SCANCODE_UNKNOWN), ENTRY(SDL_SCANCODE_MEDIA_FAST_FORWARD, RDP_SCANCODE_UNKNOWN) -#endif }; static UINT32 sdl_get_kbd_flags() @@ -390,17 +388,6 @@ uint32_t sdlInput::prefToMask() return mod; } -static const char* sdl_scancode_name(Uint32 scancode) -{ - for (const auto& cur : map) - { - if (cur.sdl == scancode) - return cur.sdl_name; - } - - return "SDL_SCANCODE_UNKNOWN"; -} - static Uint32 sdl_scancode_val(const char* scancodeName) { for (const auto& cur : map) @@ -412,28 +399,6 @@ static Uint32 sdl_scancode_val(const char* scancodeName) return SDL_SCANCODE_UNKNOWN; } -static const char* sdl_rdp_scancode_name(UINT32 scancode) -{ - for (const auto& cur : map) - { - if (cur.rdp == scancode) - return cur.rdp_name; - } - - return "RDP_SCANCODE_UNKNOWN"; -} - -static UINT32 sdl_rdp_scancode_val(const char* scancodeName) -{ - for (const auto& cur : map) - { - if (strcmp(cur.rdp_name, scancodeName) == 0) - return cur.rdp; - } - - return RDP_SCANCODE_UNKNOWN; -} - static UINT32 sdl_scancode_to_rdp(Uint32 scancode) { UINT32 rdp = RDP_SCANCODE_UNKNOWN; diff --git a/client/SDL/SDL3/sdl_monitor.cpp b/client/SDL/SDL3/sdl_monitor.cpp index 45854d79d..fc3d8dc43 100644 --- a/client/SDL/SDL3/sdl_monitor.cpp +++ b/client/SDL/SDL3/sdl_monitor.cpp @@ -81,30 +81,6 @@ int sdl_list_monitors(SdlContext* sdl) return 0; } -static BOOL sdl_is_monitor_id_active(SdlContext* sdl, UINT32 id) -{ - const rdpSettings* settings = nullptr; - - WINPR_ASSERT(sdl); - - settings = sdl->context()->settings; - WINPR_ASSERT(settings); - - const UINT32 NumMonitorIds = freerdp_settings_get_uint32(settings, FreeRDP_NumMonitorIds); - if (!NumMonitorIds) - return TRUE; - - for (UINT32 index = 0; index < NumMonitorIds; index++) - { - auto cur = static_cast( - freerdp_settings_get_pointer_array(settings, FreeRDP_MonitorIds, index)); - if (cur && (*cur == id)) - return TRUE; - } - - return FALSE; -} - static BOOL sdl_apply_max_size(SdlContext* sdl, UINT32* pMaxWidth, UINT32* pMaxHeight) { WINPR_ASSERT(sdl); From 7109df257aeaafdd189d23e22ffabacb0b10d42a Mon Sep 17 00:00:00 2001 From: akallabeth Date: Fri, 31 Jan 2025 14:11:28 +0100 Subject: [PATCH 5/7] [locale,keyboard] fix enum limits --- include/freerdp/locale/keyboard.h | 38 +++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/include/freerdp/locale/keyboard.h b/include/freerdp/locale/keyboard.h index bb548af73..82b13c3f4 100644 --- a/include/freerdp/locale/keyboard.h +++ b/include/freerdp/locale/keyboard.h @@ -201,30 +201,30 @@ typedef enum KBD_PERSIAN = 0x00050429, KBD_US_ENGLISH_TABLE_FOR_IBM_ARABIC_238_L = 0x00050409, KBD_GREEK_POLYTONIC = 0x00060408, - KBD_FRENCH_BEPO = 0xa000040c, - KBD_GERMAN_NEO = 0xB0000407 + KBD_FRENCH_BEPO = WINPR_CXX_COMPAT_CAST(int, 0xa000040c), + KBD_GERMAN_NEO = WINPR_CXX_COMPAT_CAST(int, 0xB0000407) } FREERDP_KBD_LAYPUT_VARIANT_ID; /* Global Input Method Editor (IME) IDs */ typedef enum { - KBD_CHINESE_TRADITIONAL_PHONETIC = 0xE0010404, - KBD_JAPANESE_INPUT_SYSTEM_MS_IME2002 = 0xE0010411, - KBD_KOREAN_INPUT_SYSTEM_IME_2000 = 0xE0010412, - KBD_CHINESE_SIMPLIFIED_QUANPIN = 0xE0010804, - KBD_CHINESE_TRADITIONAL_CHANGJIE = 0xE0020404, - KBD_CHINESE_SIMPLIFIED_SHUANGPIN = 0xE0020804, - KBD_CHINESE_TRADITIONAL_QUICK = 0xE0030404, - KBD_CHINESE_SIMPLIFIED_ZHENGMA = 0xE0030804, - KBD_CHINESE_TRADITIONAL_BIG5_CODE = 0xE0040404, - KBD_CHINESE_TRADITIONAL_ARRAY = 0xE0050404, - KBD_CHINESE_SIMPLIFIED_NEIMA = 0xE0050804, - KBD_CHINESE_TRADITIONAL_DAYI = 0xE0060404, - KBD_CHINESE_TRADITIONAL_UNICODE = 0xE0070404, - KBD_CHINESE_TRADITIONAL_NEW_PHONETIC = 0xE0080404, - KBD_CHINESE_TRADITIONAL_NEW_CHANGJIE = 0xE0090404, - KBD_CHINESE_TRADITIONAL_MICROSOFT_PINYIN_IME_3 = 0xE00E0804, - KBD_CHINESE_TRADITIONAL_ALPHANUMERIC = 0xE00F0404 + KBD_CHINESE_TRADITIONAL_PHONETIC = WINPR_CXX_COMPAT_CAST(int, 0xE0010404), + KBD_JAPANESE_INPUT_SYSTEM_MS_IME2002 = WINPR_CXX_COMPAT_CAST(int, 0xE0010411), + KBD_KOREAN_INPUT_SYSTEM_IME_2000 = WINPR_CXX_COMPAT_CAST(int, 0xE0010412), + KBD_CHINESE_SIMPLIFIED_QUANPIN = WINPR_CXX_COMPAT_CAST(int, 0xE0010804), + KBD_CHINESE_TRADITIONAL_CHANGJIE = WINPR_CXX_COMPAT_CAST(int, 0xE0020404), + KBD_CHINESE_SIMPLIFIED_SHUANGPIN = WINPR_CXX_COMPAT_CAST(int, 0xE0020804), + KBD_CHINESE_TRADITIONAL_QUICK = WINPR_CXX_COMPAT_CAST(int, 0xE0030404), + KBD_CHINESE_SIMPLIFIED_ZHENGMA = WINPR_CXX_COMPAT_CAST(int, 0xE0030804), + KBD_CHINESE_TRADITIONAL_BIG5_CODE = WINPR_CXX_COMPAT_CAST(int, 0xE0040404), + KBD_CHINESE_TRADITIONAL_ARRAY = WINPR_CXX_COMPAT_CAST(int, 0xE0050404), + KBD_CHINESE_SIMPLIFIED_NEIMA = WINPR_CXX_COMPAT_CAST(int, 0xE0050804), + KBD_CHINESE_TRADITIONAL_DAYI = WINPR_CXX_COMPAT_CAST(int, 0xE0060404), + KBD_CHINESE_TRADITIONAL_UNICODE = WINPR_CXX_COMPAT_CAST(int, 0xE0070404), + KBD_CHINESE_TRADITIONAL_NEW_PHONETIC = WINPR_CXX_COMPAT_CAST(int, 0xE0080404), + KBD_CHINESE_TRADITIONAL_NEW_CHANGJIE = WINPR_CXX_COMPAT_CAST(int, 0xE0090404), + KBD_CHINESE_TRADITIONAL_MICROSOFT_PINYIN_IME_3 = WINPR_CXX_COMPAT_CAST(int, 0xE00E0804), + KBD_CHINESE_TRADITIONAL_ALPHANUMERIC = WINPR_CXX_COMPAT_CAST(int, 0xE00F0404) } FREERDP_KBD_IME_ID; /** @brief Deallocation function for a \b RDP_KEYBOARD_LAYOUT array of \b count size From 8a69258f380f5d272b0f12379bb1e76e3f38dae0 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Fri, 31 Jan 2025 14:14:58 +0100 Subject: [PATCH 6/7] [client,x11] fix warnings --- client/X11/xf_client.c | 13 +++---------- client/X11/xf_event.c | 8 +------- client/X11/xf_input.c | 11 +---------- client/X11/xf_keyboard.c | 8 ++------ 4 files changed, 7 insertions(+), 33 deletions(-) diff --git a/client/X11/xf_client.c b/client/X11/xf_client.c index b71a9d244..3ae160c67 100644 --- a/client/X11/xf_client.c +++ b/client/X11/xf_client.c @@ -1151,20 +1151,16 @@ static void xf_button_map_init(xfContext* xfc) */ static BOOL xf_pre_connect(freerdp* instance) { - rdpChannels* channels = NULL; - rdpSettings* settings = NULL; - rdpContext* context = NULL; - xfContext* xfc = NULL; UINT32 maxWidth = 0; UINT32 maxHeight = 0; WINPR_ASSERT(instance); - context = instance->context; - xfc = (xfContext*)instance->context; + rdpContext* context = instance->context; WINPR_ASSERT(context); + xfContext* xfc = (xfContext*)context; - settings = context->settings; + rdpSettings* settings = context->settings; WINPR_ASSERT(settings); if (!freerdp_settings_set_bool(settings, FreeRDP_CertificateCallbackPreferPEM, TRUE)) @@ -1176,9 +1172,6 @@ static BOOL xf_pre_connect(freerdp* instance) return FALSE; } - channels = context->channels; - WINPR_ASSERT(channels); - if (!freerdp_settings_set_uint32(settings, FreeRDP_OsMajorType, OSMAJORTYPE_UNIX)) return FALSE; if (!freerdp_settings_set_uint32(settings, FreeRDP_OsMinorType, OSMINORTYPE_NATIVE_XSERVER)) diff --git a/client/X11/xf_event.c b/client/X11/xf_event.c index c7bb523a4..3b9f06b2d 100644 --- a/client/X11/xf_event.c +++ b/client/X11/xf_event.c @@ -194,20 +194,14 @@ static BOOL xf_action_script_append(xfContext* xfc, const char* buffer, size_t s BOOL xf_event_action_script_init(xfContext* xfc) { - wObject* obj = NULL; - const rdpSettings* settings = NULL; - WINPR_ASSERT(xfc); - settings = xfc->common.context.settings; - WINPR_ASSERT(settings); - xfc->xevents = ArrayList_New(TRUE); if (!xfc->xevents) return FALSE; - obj = ArrayList_Object(xfc->xevents); + wObject* obj = ArrayList_Object(xfc->xevents); WINPR_ASSERT(obj); obj->fnObjectNew = winpr_ObjectStringClone; obj->fnObjectFree = winpr_ObjectStringFree; diff --git a/client/X11/xf_input.c b/client/X11/xf_input.c index cf28363b9..7849c4f74 100644 --- a/client/X11/xf_input.c +++ b/client/X11/xf_input.c @@ -223,15 +223,11 @@ static BOOL register_raw_events(xfContext* xfc, Window window) static BOOL register_device_events(xfContext* xfc, Window window) { - XIEventMask mask; + XIEventMask mask = { 0 }; unsigned char mask_bytes[XIMaskLen(XI_LASTEVENT)] = { 0 }; - rdpSettings* settings = NULL; WINPR_ASSERT(xfc); - settings = xfc->common.context.settings; - WINPR_ASSERT(settings); - XISetMask(mask_bytes, XI_DeviceChanged); XISetMask(mask_bytes, XI_HierarchyChanged); @@ -750,8 +746,6 @@ static int xf_input_pens_unhover(xfContext* xfc) int xf_input_event(xfContext* xfc, const XEvent* xevent, XIDeviceEvent* event, int evtype) { - const rdpSettings* settings = NULL; - WINPR_ASSERT(xfc); WINPR_ASSERT(xevent); WINPR_ASSERT(event); @@ -761,9 +755,6 @@ int xf_input_event(xfContext* xfc, const XEvent* xevent, XIDeviceEvent* event, i */ const Window w = xevent->xany.window; - settings = xfc->common.context.settings; - WINPR_ASSERT(settings); - xfWindow* window = xfc->window; if (window) { diff --git a/client/X11/xf_keyboard.c b/client/X11/xf_keyboard.c index 701d0d7bd..435e86ab3 100644 --- a/client/X11/xf_keyboard.c +++ b/client/X11/xf_keyboard.c @@ -117,18 +117,14 @@ static BOOL xf_action_script_append(xfContext* xfc, const char* buffer, size_t s static BOOL xf_keyboard_action_script_init(xfContext* xfc) { - wObject* obj = NULL; - const rdpSettings* settings = NULL; - - settings = xfc->common.context.settings; - WINPR_ASSERT(settings); + WINPR_ASSERT(xfc); xfc->keyCombinations = ArrayList_New(TRUE); if (!xfc->keyCombinations) return FALSE; - obj = ArrayList_Object(xfc->keyCombinations); + wObject* obj = ArrayList_Object(xfc->keyCombinations); WINPR_ASSERT(obj); obj->fnObjectNew = winpr_ObjectStringClone; obj->fnObjectFree = winpr_ObjectStringFree; From 00e61074b2dd1e7f48a783e0368e2ef5a30ee203 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Fri, 31 Jan 2025 14:20:13 +0100 Subject: [PATCH 7/7] [unused] eliminate unused functions --- channels/video/client/video_main.c | 4 --- client/Sample/tf_channels.c | 6 ---- client/X11/xf_cliprdr.c | 33 ---------------------- client/X11/xf_rail.c | 4 --- client/common/client_cliprdr_file.c | 8 ------ libfreerdp/codec/audio.c | 14 --------- libfreerdp/core/autodetect.c | 27 ------------------ libfreerdp/core/license.c | 13 +++++---- libfreerdp/primitives/primitives.c | 2 +- libfreerdp/primitives/sse/prim_copy_avx2.c | 6 ---- 10 files changed, 8 insertions(+), 109 deletions(-) diff --git a/channels/video/client/video_main.c b/channels/video/client/video_main.c index 9b43ae508..eae5a93ff 100644 --- a/channels/video/client/video_main.c +++ b/channels/video/client/video_main.c @@ -185,14 +185,10 @@ static PresentationContext* PresentationContext_new(VideoClientContext* video, B UINT32 x, UINT32 y, UINT32 width, UINT32 height) { size_t s = 4ULL * width * height; - VideoClientContextPriv* priv = NULL; PresentationContext* ret = NULL; WINPR_ASSERT(video); - priv = video->priv; - WINPR_ASSERT(priv); - if (s > INT32_MAX) return NULL; diff --git a/client/Sample/tf_channels.c b/client/Sample/tf_channels.c index 8aaff8100..efd451d5e 100644 --- a/client/Sample/tf_channels.c +++ b/client/Sample/tf_channels.c @@ -32,12 +32,6 @@ #include "tf_channels.h" #include "tf_freerdp.h" -static UINT tf_update_surfaces(RdpgfxClientContext* context) -{ - WINPR_UNUSED(context); - return CHANNEL_RC_OK; -} - void tf_OnChannelConnectedEventHandler(void* context, const ChannelConnectedEventArgs* e) { tfContext* tf = (tfContext*)context; diff --git a/client/X11/xf_cliprdr.c b/client/X11/xf_cliprdr.c index abd81c059..949a728e8 100644 --- a/client/X11/xf_cliprdr.c +++ b/client/X11/xf_cliprdr.c @@ -202,23 +202,6 @@ static BOOL requested_format_replace(RequestedFormat** ppRequestedFormat, UINT32 return TRUE; } -static BOOL requested_format_matches(const RequestedFormat* pRequestedFormat, UINT32 formatId, - const char* formatName) -{ - if (!pRequestedFormat) - return FALSE; - if (pRequestedFormat->formatToRequest != formatId) - return FALSE; - if (formatName || pRequestedFormat->formatName) - { - if (!formatName || !pRequestedFormat->formatName) - return FALSE; - if (strcmp(formatName, pRequestedFormat->formatName) != 0) - return FALSE; - } - return TRUE; -} - static void xf_cached_data_free(void* ptr) { xfCachedData* cached_data = ptr; @@ -1039,22 +1022,6 @@ static void xf_cliprdr_process_requested_data(xfClipboard* clipboard, BOOL hasDa free(pDstData); } -static BOOL xf_add_input_flags(xfClipboard* clipboard, long mask) -{ - WINPR_ASSERT(clipboard); - - xfContext* xfc = clipboard->xfc; - WINPR_ASSERT(xfc); - - XWindowAttributes attr = { 0 }; - XGetWindowAttributes(xfc->display, xfc->drawable, &attr); - if ((attr.all_event_masks & mask) == 0) - clipboard->event_mask = attr.all_event_masks; - - XSelectInput(xfc->display, xfc->drawable, attr.all_event_masks | mask); - return TRUE; -} - static BOOL xf_restore_input_flags(xfClipboard* clipboard) { WINPR_ASSERT(clipboard); diff --git a/client/X11/xf_rail.c b/client/X11/xf_rail.c index 8dbe58e5d..4c7154eb4 100644 --- a/client/X11/xf_rail.c +++ b/client/X11/xf_rail.c @@ -173,13 +173,9 @@ void xf_rail_end_local_move(xfContext* xfc, xfAppWindow* appWindow) unsigned int mask = 0; Window root_window = 0; Window child_window = 0; - rdpInput* input = NULL; WINPR_ASSERT(xfc); - input = xfc->common.context.input; - WINPR_ASSERT(input); - if ((appWindow->local_move.direction == _NET_WM_MOVERESIZE_MOVE_KEYBOARD) || (appWindow->local_move.direction == _NET_WM_MOVERESIZE_SIZE_KEYBOARD)) { diff --git a/client/common/client_cliprdr_file.c b/client/common/client_cliprdr_file.c index e895f8b56..6509cc712 100644 --- a/client/common/client_cliprdr_file.c +++ b/client/common/client_cliprdr_file.c @@ -1664,14 +1664,6 @@ static BOOL cliprdr_file_content_changed_and_update(void* ihash, size_t hsize, c return changed; } -static BOOL cliprdr_file_server_content_changed_and_update(CliprdrFileContext* file, - const void* data, size_t size) -{ - WINPR_ASSERT(file); - return cliprdr_file_content_changed_and_update(file->server_data_hash, - sizeof(file->server_data_hash), data, size); -} - static BOOL cliprdr_file_client_content_changed_and_update(CliprdrFileContext* file, const void* data, size_t size) { diff --git a/libfreerdp/codec/audio.c b/libfreerdp/codec/audio.c index 69bd42fcb..681c68623 100644 --- a/libfreerdp/codec/audio.c +++ b/libfreerdp/codec/audio.c @@ -254,20 +254,6 @@ BOOL audio_format_compatible(const AUDIO_FORMAT* with, const AUDIO_FORMAT* what) return TRUE; } -static BOOL audio_format_valid(const AUDIO_FORMAT* format) -{ - if (!format) - return FALSE; - - if (format->nChannels == 0) - return FALSE; - - if (format->nSamplesPerSec == 0) - return FALSE; - - return TRUE; -} - AUDIO_FORMAT* audio_format_new(void) { return audio_formats_new(1); diff --git a/libfreerdp/core/autodetect.c b/libfreerdp/core/autodetect.c index 2b741d7bd..9b49f4bd5 100644 --- a/libfreerdp/core/autodetect.c +++ b/libfreerdp/core/autodetect.c @@ -435,33 +435,6 @@ autodetect_on_connect_time_auto_detect_progress_default(rdpAutoDetect* autodetec return autodetect->state; } -static BOOL autodetect_send_netchar_sync(rdpAutoDetect* autodetect, RDP_TRANSPORT_TYPE transport, - UINT16 sequenceNumber) -{ - wStream* s = NULL; - - WINPR_ASSERT(autodetect); - WINPR_ASSERT(autodetect->context); - WINPR_ASSERT(autodetect->context->rdp); - - /* Send the response PDU to the server */ - s = rdp_message_channel_pdu_init(autodetect->context->rdp); - - if (!s) - return FALSE; - - WLog_Print(autodetect->log, WLOG_TRACE, - "sending Network Characteristics Sync PDU -> bandwidth=%" PRIu32 ", rtt=%" PRIu32 "", - autodetect->netCharBandwidth, autodetect->netCharAverageRTT); - Stream_Write_UINT8(s, 0x0E); /* headerLength (1 byte) */ - Stream_Write_UINT8(s, TYPE_ID_AUTODETECT_RESPONSE); /* headerTypeId (1 byte) */ - Stream_Write_UINT16(s, sequenceNumber); /* sequenceNumber (2 bytes) */ - Stream_Write_UINT16(s, RDP_NETCHAR_SYNC_RESPONSE_TYPE); /* responseType (1 byte) */ - Stream_Write_UINT32(s, autodetect->netCharBandwidth); /* bandwidth (4 bytes) */ - Stream_Write_UINT32(s, autodetect->netCharAverageRTT); /* rtt (4 bytes) */ - return rdp_send_message_channel_pdu(autodetect->context->rdp, s, SEC_AUTODETECT_RSP); -} - static BOOL autodetect_recv_rtt_measure_request(rdpAutoDetect* autodetect, RDP_TRANSPORT_TYPE transport, wStream* s, const AUTODETECT_REQ_PDU* autodetectReqPdu) diff --git a/libfreerdp/core/license.c b/libfreerdp/core/license.c index 29d114ca5..cfddca0e7 100644 --- a/libfreerdp/core/license.c +++ b/libfreerdp/core/license.c @@ -65,12 +65,13 @@ enum LicenseRequestType ERROR_ALERT = 0xFF }; -// #define LICENSE_PKT_CS_MASK \ -// (LICENSE_INFO | NEW_LICENSE_REQUEST | PLATFORM_CHALLENGE_RESPONSE | ERROR_ALERT) -//#define LICENSE_PKT_SC_MASK \ -// (LICENSE_REQUEST | PLATFORM_CHALLENGE | NEW_LICENSE | UPGRADE_LICENSE | ERROR_ALERT) -//#define LICENSE_PKT_MASK (LICENSE_PKT_CS_MASK | LICENSE_PKT_SC_MASK) - +/* +#define LICENSE_PKT_CS_MASK \ + (LICENSE_INFO | NEW_LICENSE_REQUEST | PLATFORM_CHALLENGE_RESPONSE | ERROR_ALERT) +#define LICENSE_PKT_SC_MASK \ + (LICENSE_REQUEST | PLATFORM_CHALLENGE | NEW_LICENSE | UPGRADE_LICENSE | ERROR_ALERT) +#define LICENSE_PKT_MASK (LICENSE_PKT_CS_MASK | LICENSE_PKT_SC_MASK) +*/ #define LICENSE_PREAMBLE_LENGTH 4 /* Cryptographic Lengths */ diff --git a/libfreerdp/primitives/primitives.c b/libfreerdp/primitives/primitives.c index 484e06300..d97b6fbb8 100644 --- a/libfreerdp/primitives/primitives.c +++ b/libfreerdp/primitives/primitives.c @@ -109,6 +109,7 @@ static BOOL primitives_init_optimized(primitives_t* prims) return TRUE; } +#if defined(HAVE_CPU_OPTIMIZED_PRIMITIVES) && defined(WITH_OPENCL) typedef struct { BYTE* channels[3]; @@ -165,7 +166,6 @@ fail: return ret; } -#if defined(HAVE_CPU_OPTIMIZED_PRIMITIVES) && defined(WITH_OPENCL) static BOOL primitives_YUV_benchmark_run(primitives_YUV_benchmark* bench, primitives_t* prims, UINT64 runTime, UINT32* computations) { diff --git a/libfreerdp/primitives/sse/prim_copy_avx2.c b/libfreerdp/primitives/sse/prim_copy_avx2.c index d962b5eba..0baed39db 100644 --- a/libfreerdp/primitives/sse/prim_copy_avx2.c +++ b/libfreerdp/primitives/sse/prim_copy_avx2.c @@ -41,12 +41,6 @@ static inline __m256i mm256_set_epu32(uint32_t i0, uint32_t i1, uint32_t i2, uin (int32_t)i5, (int32_t)i6, (int32_t)i7); } -static INLINE pstatus_t avx2_image_copy_no_overlap_convert( - BYTE* WINPR_RESTRICT pDstData, DWORD DstFormat, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, - UINT32 nWidth, UINT32 nHeight, const BYTE* WINPR_RESTRICT pSrcData, DWORD SrcFormat, - UINT32 nSrcStep, UINT32 nXSrc, UINT32 nYSrc, const gdiPalette* WINPR_RESTRICT palette, - SSIZE_T srcVMultiplier, SSIZE_T srcVOffset, SSIZE_T dstVMultiplier, SSIZE_T dstVOffset); - static INLINE pstatus_t avx2_image_copy_bgr24_bgrx32(BYTE* WINPR_RESTRICT pDstData, UINT32 nDstStep, UINT32 nXDst, UINT32 nYDst, UINT32 nWidth, UINT32 nHeight,