diff --git a/CMakeLists.txt b/CMakeLists.txt index 81b80591d..bcd102511 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -163,6 +163,11 @@ if(WITH_FREERDP_DEPRECATED) add_compile_definitions(WITH_FREERDP_DEPRECATED) endif() +option(WITH_FREERDP_3x_DEPRECATED "Build FreeRDP 3x deprecated symbols" ON) +if(WITH_FREERDP_3x_DEPRECATED) + add_compile_definitions(WITH_FREERDP_3x_DEPRECATED) +endif() + option(WITH_FREERDP_DEPRECATED_COMMANDLINE "Build FreeRDP deprecated command line options" OFF) if(WITH_FREERDP_DEPRECATED_COMMANDLINE) add_compile_definitions(WITH_FREERDP_DEPRECATED_COMMANDLINE) diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index 7f9a7340a..17fd5e4bf 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -17,7 +17,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -option(WITH_OPAQUE_SETTINGS "Hide rdpSettings struct definition, only allow getter/setter access" OFF) +if(WITH_FREERDP_3x_DEPRECATED) + option(WITH_OPAQUE_SETTINGS "Hide rdpSettings struct definition, only allow getter/setter access" OFF) +else() + set(WITH_OPAQUE_SETTINGS ON CACHE INTERNAL "WITH_FREERDP_3x_DEPRECATED") +endif() # prepare paths for C file(TO_NATIVE_PATH "${FREERDP_DATA_PATH}" NATIVE_FREERDP_DATA_PATH) diff --git a/include/freerdp/codecs.h b/include/freerdp/codecs.h index 8869b6109..e6b8c30ec 100644 --- a/include/freerdp/codecs.h +++ b/include/freerdp/codecs.h @@ -86,12 +86,14 @@ extern "C" WINPR_ATTR_MALLOC(freerdp_client_codecs_free, 1) FREERDP_API rdpCodecs* freerdp_client_codecs_new(UINT32 TheadingFlags); +#if defined(WITH_FREERDP_3x_DEPRECATED) WINPR_DEPRECATED_VAR("[since 3.6.0] Use freerdp_client_codecs_free", FREERDP_API void codecs_free(rdpCodecs* codecs)); WINPR_DEPRECATED_VAR("[since 3.6.0] Use freerdp_client_codecs_new", WINPR_ATTR_MALLOC(codecs_free, 1) FREERDP_API rdpCodecs* codecs_new(rdpContext* context)); +#endif #ifdef __cplusplus } diff --git a/include/freerdp/freerdp.h b/include/freerdp/freerdp.h index 91e60177b..7b3350b09 100644 --- a/include/freerdp/freerdp.h +++ b/include/freerdp/freerdp.h @@ -569,14 +569,18 @@ owned by rdpRdp */ FREERDP_API BOOL freerdp_connect(freerdp* instance); +#if defined(WITH_FREERDP_3x_DEPRECATED) WINPR_DEPRECATED_VAR("use freerdp_abort_connect_context instead", FREERDP_API BOOL freerdp_abort_connect(freerdp* instance)); +#endif FREERDP_API BOOL freerdp_abort_connect_context(rdpContext* context); FREERDP_API HANDLE freerdp_abort_event(rdpContext* context); +#if defined(WITH_FREERDP_3x_DEPRECATED) WINPR_DEPRECATED_VAR("use freerdp_shall_disconnect_context instead", FREERDP_API BOOL freerdp_shall_disconnect(freerdp* instance)); +#endif FREERDP_API BOOL freerdp_shall_disconnect_context(const rdpContext* context); FREERDP_API BOOL freerdp_disconnect(freerdp* instance); @@ -591,8 +595,11 @@ owned by rdpRdp */ */ FREERDP_API const char* freerdp_disconnect_reason_string(int reason); +#if defined(WITH_FREERDP_3x_DEPRECATED) WINPR_DEPRECATED_VAR("use freerdp_disconnect_before_reconnect_context instead", FREERDP_API BOOL freerdp_disconnect_before_reconnect(freerdp* instance)); +#endif + FREERDP_API BOOL freerdp_disconnect_before_reconnect_context(rdpContext* context); FREERDP_API BOOL freerdp_reconnect(freerdp* instance); diff --git a/include/freerdp/locale/keyboard.h b/include/freerdp/locale/keyboard.h index 82b13c3f4..4dcdf655a 100644 --- a/include/freerdp/locale/keyboard.h +++ b/include/freerdp/locale/keyboard.h @@ -262,6 +262,7 @@ FREERDP_API const char* freerdp_keyboard_get_layout_name_from_id(DWORD keyboardL */ FREERDP_API DWORD freerdp_keyboard_get_layout_id_from_name(const char* name); +#if defined(WITH_FREERDP_3x_DEPRECATED) WINPR_DEPRECATED_VAR("since 3.11.0, implement yourself in client", FREERDP_API DWORD freerdp_keyboard_init(DWORD keyboardLayoutId)); @@ -276,6 +277,7 @@ WINPR_DEPRECATED_VAR("since 3.11.0, implement yourself in client", WINPR_DEPRECATED_VAR("since 3.11.0, implement yourself in client", FREERDP_API DWORD freerdp_keyboard_get_x11_keycode_from_rdp_scancode( DWORD scancode, BOOL extended)); +#endif /** @brief deallocate a \b FREERDP_REMAP_TABLE * diff --git a/include/freerdp/server/proxy/proxy_config.h b/include/freerdp/server/proxy/proxy_config.h index 73f770706..98dd6dc45 100644 --- a/include/freerdp/server/proxy/proxy_config.h +++ b/include/freerdp/server/proxy/proxy_config.h @@ -86,11 +86,13 @@ extern "C" size_t InterceptCount; /* clipboard specific settings */ +#if defined(WITH_FREERDP_3x_DEPRECATED) WINPR_DEPRECATED_VAR("[since 3.6.0] Unused, ignore", BOOL TextOnly); WINPR_DEPRECATED_VAR("[since 3.6.0] Unused, ignore", UINT32 MaxTextLength); /* gfx settings */ WINPR_DEPRECATED_VAR("[since 3.6.0] Unused, ignore", BOOL DecodeGFX); +#endif /* modules */ char** Modules; /* module file names to load */ diff --git a/include/freerdp/server/shadow.h b/include/freerdp/server/shadow.h index 33cc0a369..bf36bc59e 100644 --- a/include/freerdp/server/shadow.h +++ b/include/freerdp/server/shadow.h @@ -303,11 +303,13 @@ extern "C" FREERDP_API void shadow_subsystem_set_entry_builtin(const char* name); FREERDP_API void shadow_subsystem_set_entry(pfnShadowSubsystemEntry pEntry); +#if defined(WITH_FREERDP_3x_DEPRECATED) WINPR_DEPRECATED_VAR( "[since 3.4.0] Use shadow_subsystem_pointer_convert_alpha_pointer_data_to_format instead", FREERDP_API int shadow_subsystem_pointer_convert_alpha_pointer_data( const BYTE* WINPR_RESTRICT pixels, BOOL premultiplied, UINT32 width, UINT32 height, SHADOW_MSG_OUT_POINTER_ALPHA_UPDATE* WINPR_RESTRICT pointerColor)); +#endif /** @brief Convert a pointer image from input format to RDP specific encoding * @@ -347,11 +349,13 @@ extern "C" FREERDP_API int shadow_capture_align_clip_rect(RECTANGLE_16* rect, const RECTANGLE_16* clip); +#if defined(WITH_FREERDP_3x_DEPRECATED) WINPR_DEPRECATED_VAR("[since 3.4.0] Use shadow_capture_compare_with_format", FREERDP_API int shadow_capture_compare( const BYTE* WINPR_RESTRICT pData1, UINT32 nStep1, UINT32 nWidth, UINT32 nHeight, const BYTE* WINPR_RESTRICT pData2, UINT32 nStep2, RECTANGLE_16* WINPR_RESTRICT rect)); +#endif /** @brief Compare two framebuffer images of possibly different formats with each other * diff --git a/libfreerdp/common/settings_getters.c b/libfreerdp/common/settings_getters.c index f41b8a9aa..6331933f3 100644 --- a/libfreerdp/common/settings_getters.c +++ b/libfreerdp/common/settings_getters.c @@ -2002,6 +2002,7 @@ UINT32 freerdp_settings_get_uint32(WINPR_ATTR_UNUSED const rdpSettings* settings case FreeRDP_VCFlags: return settings->VCFlags; +#if defined(WITH_FREERDP_3x_DEPRECATED) // API Compatibility section, remove with FreeRDP 4.x case (FreeRDP_Settings_Keys_UInt32)FreeRDP_MonitorLocalShiftX: return (UINT32)settings->MonitorLocalShiftX; @@ -2010,6 +2011,7 @@ UINT32 freerdp_settings_get_uint32(WINPR_ATTR_UNUSED const rdpSettings* settings case (FreeRDP_Settings_Keys_UInt32)FreeRDP_MonitorLocalShiftY: return (UINT32)settings->MonitorLocalShiftY; +#endif default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), @@ -2531,6 +2533,7 @@ BOOL freerdp_settings_set_uint32(WINPR_ATTR_UNUSED rdpSettings* settings, settings->VCFlags = cnv.c; break; +#if defined(WITH_FREERDP_3x_DEPRECATED) // API Compatibility section, remove with FreeRDP 4.x case FreeRDP_MonitorLocalShiftX: settings->MonitorLocalShiftX = (int32_t)cnv.c; @@ -2541,6 +2544,7 @@ BOOL freerdp_settings_set_uint32(WINPR_ATTR_UNUSED rdpSettings* settings, settings->MonitorLocalShiftY = (int32_t)cnv.c; break; +#endif default: WLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), diff --git a/libfreerdp/core/codecs.c b/libfreerdp/core/codecs.c index 4dea7a47e..19c558aa3 100644 --- a/libfreerdp/core/codecs.c +++ b/libfreerdp/core/codecs.c @@ -239,6 +239,7 @@ BOOL freerdp_client_codecs_reset(rdpCodecs* codecs, UINT32 flags, UINT32 width, return rc; } +#if defined(WITH_FREERDP_3x_DEPRECATED) rdpCodecs* codecs_new(rdpContext* context) { if (!context || !context->settings) @@ -252,6 +253,7 @@ void codecs_free(rdpCodecs* codecs) { freerdp_client_codecs_free(codecs); } +#endif rdpCodecs* freerdp_client_codecs_new(UINT32 ThreadingFlags) { diff --git a/libfreerdp/core/freerdp.c b/libfreerdp/core/freerdp.c index 58852cf4f..e5388ec12 100644 --- a/libfreerdp/core/freerdp.c +++ b/libfreerdp/core/freerdp.c @@ -299,6 +299,7 @@ freerdp_connect_finally: return status; } +#if defined(WITH_FREERDP_3x_DEPRECATED) BOOL freerdp_abort_connect(freerdp* instance) { if (!instance) @@ -306,6 +307,7 @@ BOOL freerdp_abort_connect(freerdp* instance) return freerdp_abort_connect_context(instance->context); } +#endif BOOL freerdp_abort_connect_context(rdpContext* context) { @@ -636,11 +638,13 @@ BOOL freerdp_disconnect(freerdp* instance) return rc; } +#if defined(WITH_FREERDP_3x_DEPRECATED) BOOL freerdp_disconnect_before_reconnect(freerdp* instance) { WINPR_ASSERT(instance); return freerdp_disconnect_before_reconnect_context(instance->context); } +#endif BOOL freerdp_disconnect_before_reconnect_context(rdpContext* context) { @@ -669,6 +673,7 @@ BOOL freerdp_reconnect(freerdp* instance) return rdp_client_reconnect(rdp); } +#if defined(WITH_FREERDP_3x_DEPRECATED) BOOL freerdp_shall_disconnect(freerdp* instance) { if (!instance) @@ -676,6 +681,7 @@ BOOL freerdp_shall_disconnect(freerdp* instance) return freerdp_shall_disconnect_context(instance->context); } +#endif BOOL freerdp_shall_disconnect_context(const rdpContext* context) { diff --git a/libfreerdp/locale/CMakeLists.txt b/libfreerdp/locale/CMakeLists.txt index 322761c55..cead128b7 100644 --- a/libfreerdp/locale/CMakeLists.txt +++ b/libfreerdp/locale/CMakeLists.txt @@ -20,9 +20,11 @@ set(MODULE_PREFIX "FREERDP_LOCALE") set(SRCS keyboard_layout.c keyboard.c locale.c liblocale.h) -set(X11_SRCS keyboard_x11.c keyboard_x11.h xkb_layout_ids.c xkb_layout_ids.h) +if(WITH_FREERDP_3x_DEPRECATED) + set(X11_SRCS keyboard_x11.c keyboard_x11.h xkb_layout_ids.c xkb_layout_ids.h) -set(XKBFILE_SRCS keyboard_xkbfile.c keyboard_xkbfile.h) + set(XKBFILE_SRCS keyboard_xkbfile.c keyboard_xkbfile.h) +endif() set(SUN_SRCS keyboard_sun.c keyboard_sun.h) @@ -52,7 +54,7 @@ if(APPLE) freerdp_library_add(${CORE_FOUNDATION}) endif() -if(WITH_X11) +if(WITH_X11 AND WITH_FREERDP_3x_DEPRECATED) find_package(X11 REQUIRED) freerdp_definition_add(WITH_X11) @@ -75,7 +77,7 @@ if(WITH_X11) endif() endif() -if(WITH_WAYLAND) +if(WITH_WAYLAND AND WITH_FREERDP_3x_DEPRECATED) freerdp_definition_add(WITH_WAYLAND) endif() diff --git a/libfreerdp/locale/keyboard.c b/libfreerdp/locale/keyboard.c index 34b3e9d40..f8744435e 100644 --- a/libfreerdp/locale/keyboard.c +++ b/libfreerdp/locale/keyboard.c @@ -35,25 +35,29 @@ #include "liblocale.h" +#if defined(WITH_FREERDP_3x_DEPRECATED) +#define TAG FREERDP_TAG("locale.keyboard") + #if defined(__MACOSX__) #include "keyboard_apple.h" #endif -#define TAG FREERDP_TAG("locale.keyboard") - #ifdef WITH_X11 #include "keyboard_x11.h" #ifdef WITH_XKBFILE #include "keyboard_xkbfile.h" #endif +#endif #endif +#if defined(WITH_FREERDP_3x_DEPRECATED) static WINPR_KEYCODE_TYPE maptype = WINPR_KEYCODE_TYPE_NONE; static DWORD VIRTUAL_SCANCODE_TO_X11_KEYCODE[256][2] = { 0 }; static DWORD X11_KEYCODE_TO_VIRTUAL_SCANCODE[256] = { 0 }; static DWORD REMAPPING_TABLE[0x10000] = { 0 }; +#endif struct rdp_remap_table { @@ -226,6 +230,7 @@ static const struct scancode_map_entry RDP_SCANCODE_MAP[] = { { RDP_SCANCODE_LAUNCH_APP2, "VK_LAUNCH_APP2" }, }; +#if defined(WITH_FREERDP_3x_DEPRECATED) static int freerdp_detect_keyboard(DWORD* keyboardLayoutId) { #if defined(_WIN32) @@ -348,6 +353,7 @@ DWORD freerdp_keyboard_init(DWORD keyboardLayoutId) return keyboardLayoutId; } +#endif FREERDP_REMAP_TABLE* freerdp_keyboard_remap_string_to_list(const char* list) { @@ -395,6 +401,7 @@ fail: return remap_table; } +#if defined(WITH_FREERDP_3x_DEPRECATED) DWORD freerdp_keyboard_init_ex(DWORD keyboardLayoutId, const char* keyboardRemappingList) { DWORD res = freerdp_keyboard_init(keyboardLayoutId); @@ -483,6 +490,7 @@ DWORD freerdp_keyboard_get_x11_keycode_from_rdp_scancode(DWORD scancode, BOOL ex else return x11[0]; } +#endif const char* freerdp_keyboard_scancode_name(DWORD scancode) { diff --git a/libfreerdp/locale/keyboard_x11.h b/libfreerdp/locale/keyboard_x11.h index 563aca163..72fe850ac 100644 --- a/libfreerdp/locale/keyboard_x11.h +++ b/libfreerdp/locale/keyboard_x11.h @@ -22,8 +22,8 @@ #include -WINPR_DEPRECATED_VAR( - "since 3.13.0, implement in client code", - FREERDP_LOCAL int freerdp_detect_keyboard_layout_from_xkb(DWORD* keyboardLayoutId)); +#if defined(WITH_FREERDP_3x_DEPRECATED) +FREERDP_LOCAL int freerdp_detect_keyboard_layout_from_xkb(DWORD* keyboardLayoutId); +#endif #endif /* FREERDP_LOCALE_KEYBOARD_X11_H */ diff --git a/libfreerdp/locale/xkb_layout_ids.h b/libfreerdp/locale/xkb_layout_ids.h index 2adb8fbee..ae8cce9f8 100644 --- a/libfreerdp/locale/xkb_layout_ids.h +++ b/libfreerdp/locale/xkb_layout_ids.h @@ -23,8 +23,8 @@ #include #include -WINPR_DEPRECATED_VAR("since 3.13.0, implement in client code", - FREERDP_LOCAL UINT32 find_keyboard_layout_in_xorg_rules(const char* layout, - const char* variant)); +#if defined(WITH_FREERDP_3x_DEPRECATED) +FREERDP_LOCAL UINT32 find_keyboard_layout_in_xorg_rules(const char* layout, const char* variant); +#endif #endif /* FREERDP_LIB_LOCALE_XKB_LAYOUT_IDS_H */ diff --git a/server/shadow/shadow_capture.c b/server/shadow/shadow_capture.c index bd1790ae6..b18839fab 100644 --- a/server/shadow/shadow_capture.c +++ b/server/shadow/shadow_capture.c @@ -76,6 +76,7 @@ int shadow_capture_align_clip_rect(RECTANGLE_16* rect, const RECTANGLE_16* clip) return 1; } +#if defined(WITH_FREERDP_3x_DEPRECATED) int shadow_capture_compare(const BYTE* WINPR_RESTRICT pData1, UINT32 nStep1, UINT32 nWidth, UINT32 nHeight, const BYTE* WINPR_RESTRICT pData2, UINT32 nStep2, RECTANGLE_16* WINPR_RESTRICT rect) @@ -83,6 +84,7 @@ int shadow_capture_compare(const BYTE* WINPR_RESTRICT pData1, UINT32 nStep1, UIN return shadow_capture_compare_with_format(pData1, PIXEL_FORMAT_BGRX32, nStep1, nWidth, nHeight, pData2, PIXEL_FORMAT_BGRX32, nStep2, rect); } +#endif static BOOL color_equal(UINT32 colorA, UINT32 formatA, UINT32 colorB, UINT32 formatB) { diff --git a/server/shadow/shadow_subsystem.c b/server/shadow/shadow_subsystem.c index bbdb568ef..c8ca4014e 100644 --- a/server/shadow/shadow_subsystem.c +++ b/server/shadow/shadow_subsystem.c @@ -189,6 +189,7 @@ UINT32 shadow_enum_monitors(MONITOR_DEF* monitors, UINT32 maxMonitors) * and andmask data and fill into SHADOW_MSG_OUT_POINTER_ALPHA_UPDATE * Caller should free the andMaskData and xorMaskData later. */ +#if defined(WITH_FREERDP_3x_DEPRECATED) int shadow_subsystem_pointer_convert_alpha_pointer_data( const BYTE* WINPR_RESTRICT pixels, BOOL premultiplied, UINT32 width, UINT32 height, SHADOW_MSG_OUT_POINTER_ALPHA_UPDATE* WINPR_RESTRICT pointerColor) @@ -196,6 +197,7 @@ int shadow_subsystem_pointer_convert_alpha_pointer_data( return shadow_subsystem_pointer_convert_alpha_pointer_data_to_format( pixels, PIXEL_FORMAT_BGRX32, premultiplied, width, height, pointerColor); } +#endif int shadow_subsystem_pointer_convert_alpha_pointer_data_to_format( const BYTE* pixels, UINT32 format, BOOL premultiplied, UINT32 width, UINT32 height, diff --git a/tools/update-settings-tests b/tools/update-settings-tests index 8d33ef613..66acc647b 100755 --- a/tools/update-settings-tests +++ b/tools/update-settings-tests @@ -101,11 +101,13 @@ def write_getter_body(f, values, ret, keys, isPointer, compat_values, typestr, e cast = '(void*)' write_getter_case(f, val, cast, None) if compat_values: + f.write('#if defined(WITH_FREERDP_3x_DEPRECATED)\n') for i in range(len(compat_values)): val = compat_values[i] cast = '(' + entry_type + ')' f.write('\t\t// API Compatibility section, remove with FreeRDP 4.x\n') write_getter_case(f, val, cast, typestr) + f.write('#endif\n') f.write('\t\tdefault:\n') f.write('\t\t\tWLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id));\n') f.write('\t\t\tWINPR_ASSERT(FALSE);\n') @@ -217,10 +219,12 @@ def write_setter(f, entry_dict, entry_type, entry_name, postfix, compat_dict): cast = '(' + k + ')' write_setter_case(f, val, postfix, isPointer, cast) if compat_values: + f.write('#if defined(WITH_FREERDP_3x_DEPRECATED)\n') for val in compat_values: cast = '(int32_t)' f.write('\t\t// API Compatibility section, remove with FreeRDP 4.x\n') write_setter_case(f, val, postfix, isPointer, cast) + f.write('#endif\n') f.write('\t\tdefault:\n') f.write('\t\t\tWLog_ERR(TAG, "Invalid key index %" PRIuz " [%s|%s]", id, freerdp_settings_get_name_for_key(id), freerdp_settings_get_type_name_for_key(id));\n') f.write('\t\t\treturn FALSE;\n') diff --git a/winpr/include/winpr/custom-crypto.h b/winpr/include/winpr/custom-crypto.h index e33a995cb..19dbc204b 100644 --- a/winpr/include/winpr/custom-crypto.h +++ b/winpr/include/winpr/custom-crypto.h @@ -264,12 +264,14 @@ extern "C" WINPR_API void winpr_Cipher_Free(WINPR_CIPHER_CTX* ctx); +#if defined(WITH_FREERDP_3x_DEPRECATED) WINPR_DEPRECATED_VAR("[since 3.10.0] use winpr_Cipher_NewEx", WINPR_ATTR_MALLOC(winpr_Cipher_Free, 1) WINPR_API WINPR_CIPHER_CTX* winpr_Cipher_New(WINPR_CIPHER_TYPE cipher, WINPR_CRYPTO_OPERATION op, const void* key, const void* iv)); +#endif /** @brief Create a new \b WINPR_CIPHER_CTX * diff --git a/winpr/libwinpr/crypto/cipher.c b/winpr/libwinpr/crypto/cipher.c index b9f64e065..0df944a5b 100644 --- a/winpr/libwinpr/crypto/cipher.c +++ b/winpr/libwinpr/crypto/cipher.c @@ -574,11 +574,13 @@ mbedtls_cipher_type_t winpr_mbedtls_get_cipher_type(int cipher) } #endif +#if defined(WITH_FREERDP_3x_DEPRECATED) WINPR_CIPHER_CTX* winpr_Cipher_New(WINPR_CIPHER_TYPE cipher, WINPR_CRYPTO_OPERATION op, const void* key, const void* iv) { return winpr_Cipher_NewEx(cipher, op, key, 0, iv, 0); } +#endif WINPR_API WINPR_CIPHER_CTX* winpr_Cipher_NewEx(WINPR_CIPHER_TYPE cipher, WINPR_CRYPTO_OPERATION op, const void* key, WINPR_ATTR_UNUSED size_t keylen,