Jelajahi Sumber

libobs: Deprecate obs_data_autoselect_*

The autoselect functionality was meant to enable user feedback for when
data was selected, but something else actually used, for example in case
the value "Auto" was chosen, or an incompatible one.

However, it has a few problems:
1. It was not really used, the only places in OBS were the legacy Video
Capture Device on macOS and the Video Capture Device on Windows.
2. It was never even fully implemented in the UI. In fact, the
properties view *only* supports it for obs_property_list, despite the
API theoretically allowing any data/property type.
3. The core obs_data seems like the wrong place for this kind of
interaction between plugins and UI. obs_data should carry data from one
place to another, some built-in feedback mechanism for the other
direction doesn't make too much sense. If the functionality is desired,
I think this should be rearchitectured as some place of explicit data
transfer.

Let's mark it as deprecated for future removal.
Sebastian Beckmann 1 bulan lalu
induk
melakukan
e2712f097e
2 mengubah file dengan 56 tambahan dan 42 penghapusan
  1. 11 0
      libobs/CMakeLists.txt
  2. 45 42
      libobs/obs-data.h

+ 11 - 0
libobs/CMakeLists.txt

@@ -219,6 +219,17 @@ target_sources(
     graphics/vec4.h
 )
 
+# Temporarily disables deprecation warnings while obs_data_autoselect_* is deprecated.
+if(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
+  set_source_files_properties(obs-data.c PROPERTIES COMPILE_OPTIONS "/wd4996")
+elseif(
+  CMAKE_C_COMPILER_ID STREQUAL "GNU"
+  OR CMAKE_C_COMPILER_ID STREQUAL "Clang"
+  OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang"
+)
+  set_source_files_properties(obs-data.c PROPERTIES COMPILE_OPTIONS "-Wno-deprecated-declarations")
+endif()
+
 target_compile_features(libobs PUBLIC cxx_std_17)
 
 target_compile_definitions(

+ 45 - 42
libobs/obs-data.h

@@ -107,12 +107,12 @@ EXPORT void obs_data_set_default_array(obs_data_t *data, const char *name, obs_d
  * Use these to communicate the actual values of settings in case the user
  * settings aren't appropriate
  */
-EXPORT void obs_data_set_autoselect_string(obs_data_t *data, const char *name, const char *val);
-EXPORT void obs_data_set_autoselect_int(obs_data_t *data, const char *name, long long val);
-EXPORT void obs_data_set_autoselect_double(obs_data_t *data, const char *name, double val);
-EXPORT void obs_data_set_autoselect_bool(obs_data_t *data, const char *name, bool val);
-EXPORT void obs_data_set_autoselect_obj(obs_data_t *data, const char *name, obs_data_t *obj);
-EXPORT void obs_data_set_autoselect_array(obs_data_t *data, const char *name, obs_data_array_t *arr);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_string(obs_data_t *data, const char *name, const char *val);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_int(obs_data_t *data, const char *name, long long val);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_double(obs_data_t *data, const char *name, double val);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_bool(obs_data_t *data, const char *name, bool val);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_obj(obs_data_t *data, const char *name, obs_data_t *obj);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_array(obs_data_t *data, const char *name, obs_data_array_t *arr);
 
 /*
  * Get functions
@@ -131,12 +131,12 @@ EXPORT bool obs_data_get_default_bool(obs_data_t *data, const char *name);
 EXPORT obs_data_t *obs_data_get_default_obj(obs_data_t *data, const char *name);
 EXPORT obs_data_array_t *obs_data_get_default_array(obs_data_t *data, const char *name);
 
-EXPORT const char *obs_data_get_autoselect_string(obs_data_t *data, const char *name);
-EXPORT long long obs_data_get_autoselect_int(obs_data_t *data, const char *name);
-EXPORT double obs_data_get_autoselect_double(obs_data_t *data, const char *name);
-EXPORT bool obs_data_get_autoselect_bool(obs_data_t *data, const char *name);
-EXPORT obs_data_t *obs_data_get_autoselect_obj(obs_data_t *data, const char *name);
-EXPORT obs_data_array_t *obs_data_get_autoselect_array(obs_data_t *data, const char *name);
+OBS_DEPRECATED EXPORT const char *obs_data_get_autoselect_string(obs_data_t *data, const char *name);
+OBS_DEPRECATED EXPORT long long obs_data_get_autoselect_int(obs_data_t *data, const char *name);
+OBS_DEPRECATED EXPORT double obs_data_get_autoselect_double(obs_data_t *data, const char *name);
+OBS_DEPRECATED EXPORT bool obs_data_get_autoselect_bool(obs_data_t *data, const char *name);
+OBS_DEPRECATED EXPORT obs_data_t *obs_data_get_autoselect_obj(obs_data_t *data, const char *name);
+OBS_DEPRECATED EXPORT obs_data_array_t *obs_data_get_autoselect_array(obs_data_t *data, const char *name);
 
 /* Array functions */
 EXPORT obs_data_array_t *obs_data_array_create();
@@ -156,22 +156,22 @@ EXPORT void obs_data_array_enum(obs_data_array_t *array, void (*cb)(obs_data_t *
 
 EXPORT bool obs_data_has_user_value(obs_data_t *data, const char *name);
 EXPORT bool obs_data_has_default_value(obs_data_t *data, const char *name);
-EXPORT bool obs_data_has_autoselect_value(obs_data_t *data, const char *name);
+OBS_DEPRECATED EXPORT bool obs_data_has_autoselect_value(obs_data_t *data, const char *name);
 
 EXPORT bool obs_data_item_has_user_value(obs_data_item_t *data);
 EXPORT bool obs_data_item_has_default_value(obs_data_item_t *data);
-EXPORT bool obs_data_item_has_autoselect_value(obs_data_item_t *data);
+OBS_DEPRECATED EXPORT bool obs_data_item_has_autoselect_value(obs_data_item_t *data);
 
 /* ------------------------------------------------------------------------- */
 /* Clearing data values */
 
 EXPORT void obs_data_unset_user_value(obs_data_t *data, const char *name);
 EXPORT void obs_data_unset_default_value(obs_data_t *data, const char *name);
-EXPORT void obs_data_unset_autoselect_value(obs_data_t *data, const char *name);
+OBS_DEPRECATED EXPORT void obs_data_unset_autoselect_value(obs_data_t *data, const char *name);
 
 EXPORT void obs_data_item_unset_user_value(obs_data_item_t *data);
 EXPORT void obs_data_item_unset_default_value(obs_data_item_t *data);
-EXPORT void obs_data_item_unset_autoselect_value(obs_data_item_t *data);
+OBS_DEPRECATED EXPORT void obs_data_item_unset_autoselect_value(obs_data_item_t *data);
 
 /* ------------------------------------------------------------------------- */
 /* Item iteration */
@@ -202,12 +202,12 @@ EXPORT void obs_data_item_set_default_bool(obs_data_item_t **item, bool val);
 EXPORT void obs_data_item_set_default_obj(obs_data_item_t **item, obs_data_t *val);
 EXPORT void obs_data_item_set_default_array(obs_data_item_t **item, obs_data_array_t *val);
 
-EXPORT void obs_data_item_set_autoselect_string(obs_data_item_t **item, const char *val);
-EXPORT void obs_data_item_set_autoselect_int(obs_data_item_t **item, long long val);
-EXPORT void obs_data_item_set_autoselect_double(obs_data_item_t **item, double val);
-EXPORT void obs_data_item_set_autoselect_bool(obs_data_item_t **item, bool val);
-EXPORT void obs_data_item_set_autoselect_obj(obs_data_item_t **item, obs_data_t *val);
-EXPORT void obs_data_item_set_autoselect_array(obs_data_item_t **item, obs_data_array_t *val);
+OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_string(obs_data_item_t **item, const char *val);
+OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_int(obs_data_item_t **item, long long val);
+OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_double(obs_data_item_t **item, double val);
+OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_bool(obs_data_item_t **item, bool val);
+OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_obj(obs_data_item_t **item, obs_data_t *val);
+OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_array(obs_data_item_t **item, obs_data_array_t *val);
 
 /* Item get functions */
 EXPORT const char *obs_data_item_get_string(obs_data_item_t *item);
@@ -224,12 +224,12 @@ EXPORT bool obs_data_item_get_default_bool(obs_data_item_t *item);
 EXPORT obs_data_t *obs_data_item_get_default_obj(obs_data_item_t *item);
 EXPORT obs_data_array_t *obs_data_item_get_default_array(obs_data_item_t *item);
 
-EXPORT const char *obs_data_item_get_autoselect_string(obs_data_item_t *item);
-EXPORT long long obs_data_item_get_autoselect_int(obs_data_item_t *item);
-EXPORT double obs_data_item_get_autoselect_double(obs_data_item_t *item);
-EXPORT bool obs_data_item_get_autoselect_bool(obs_data_item_t *item);
-EXPORT obs_data_t *obs_data_item_get_autoselect_obj(obs_data_item_t *item);
-EXPORT obs_data_array_t *obs_data_item_get_autoselect_array(obs_data_item_t *item);
+OBS_DEPRECATED EXPORT const char *obs_data_item_get_autoselect_string(obs_data_item_t *item);
+OBS_DEPRECATED EXPORT long long obs_data_item_get_autoselect_int(obs_data_item_t *item);
+OBS_DEPRECATED EXPORT double obs_data_item_get_autoselect_double(obs_data_item_t *item);
+OBS_DEPRECATED EXPORT bool obs_data_item_get_autoselect_bool(obs_data_item_t *item);
+OBS_DEPRECATED EXPORT obs_data_t *obs_data_item_get_autoselect_obj(obs_data_item_t *item);
+OBS_DEPRECATED EXPORT obs_data_array_t *obs_data_item_get_autoselect_array(obs_data_item_t *item);
 
 /* ------------------------------------------------------------------------- */
 /* Helper functions for certain structures */
@@ -243,10 +243,10 @@ EXPORT void obs_data_set_default_vec3(obs_data_t *data, const char *name, const
 EXPORT void obs_data_set_default_vec4(obs_data_t *data, const char *name, const struct vec4 *val);
 EXPORT void obs_data_set_default_quat(obs_data_t *data, const char *name, const struct quat *val);
 
-EXPORT void obs_data_set_autoselect_vec2(obs_data_t *data, const char *name, const struct vec2 *val);
-EXPORT void obs_data_set_autoselect_vec3(obs_data_t *data, const char *name, const struct vec3 *val);
-EXPORT void obs_data_set_autoselect_vec4(obs_data_t *data, const char *name, const struct vec4 *val);
-EXPORT void obs_data_set_autoselect_quat(obs_data_t *data, const char *name, const struct quat *val);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_vec2(obs_data_t *data, const char *name, const struct vec2 *val);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_vec3(obs_data_t *data, const char *name, const struct vec3 *val);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_vec4(obs_data_t *data, const char *name, const struct vec4 *val);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_quat(obs_data_t *data, const char *name, const struct quat *val);
 
 EXPORT void obs_data_get_vec2(obs_data_t *data, const char *name, struct vec2 *val);
 EXPORT void obs_data_get_vec3(obs_data_t *data, const char *name, struct vec3 *val);
@@ -258,10 +258,10 @@ EXPORT void obs_data_get_default_vec3(obs_data_t *data, const char *name, struct
 EXPORT void obs_data_get_default_vec4(obs_data_t *data, const char *name, struct vec4 *val);
 EXPORT void obs_data_get_default_quat(obs_data_t *data, const char *name, struct quat *val);
 
-EXPORT void obs_data_get_autoselect_vec2(obs_data_t *data, const char *name, struct vec2 *val);
-EXPORT void obs_data_get_autoselect_vec3(obs_data_t *data, const char *name, struct vec3 *val);
-EXPORT void obs_data_get_autoselect_vec4(obs_data_t *data, const char *name, struct vec4 *val);
-EXPORT void obs_data_get_autoselect_quat(obs_data_t *data, const char *name, struct quat *val);
+OBS_DEPRECATED EXPORT void obs_data_get_autoselect_vec2(obs_data_t *data, const char *name, struct vec2 *val);
+OBS_DEPRECATED EXPORT void obs_data_get_autoselect_vec3(obs_data_t *data, const char *name, struct vec3 *val);
+OBS_DEPRECATED EXPORT void obs_data_get_autoselect_vec4(obs_data_t *data, const char *name, struct vec4 *val);
+OBS_DEPRECATED EXPORT void obs_data_get_autoselect_quat(obs_data_t *data, const char *name, struct quat *val);
 
 /* ------------------------------------------------------------------------- */
 /* Helper functions for media_frames_per_second/OBS_PROPERTY_FRAME_RATE */
@@ -269,8 +269,9 @@ EXPORT void obs_data_set_frames_per_second(obs_data_t *data, const char *name, s
 					   const char *option);
 EXPORT void obs_data_set_default_frames_per_second(obs_data_t *data, const char *name,
 						   struct media_frames_per_second fps, const char *option);
-EXPORT void obs_data_set_autoselect_frames_per_second(obs_data_t *data, const char *name,
-						      struct media_frames_per_second fps, const char *option);
+OBS_DEPRECATED EXPORT void obs_data_set_autoselect_frames_per_second(obs_data_t *data, const char *name,
+								     struct media_frames_per_second fps,
+								     const char *option);
 
 EXPORT bool obs_data_get_frames_per_second(obs_data_t *data, const char *name, struct media_frames_per_second *fps,
 					   const char **option);
@@ -283,15 +284,17 @@ EXPORT void obs_data_item_set_frames_per_second(obs_data_item_t **item, struct m
 						const char *option);
 EXPORT void obs_data_item_set_default_frames_per_second(obs_data_item_t **item, struct media_frames_per_second fps,
 							const char *option);
-EXPORT void obs_data_item_set_autoselect_frames_per_second(obs_data_item_t **item, struct media_frames_per_second fps,
-							   const char *option);
+OBS_DEPRECATED EXPORT void obs_data_item_set_autoselect_frames_per_second(obs_data_item_t **item,
+									  struct media_frames_per_second fps,
+									  const char *option);
 
 EXPORT bool obs_data_item_get_frames_per_second(obs_data_item_t *item, struct media_frames_per_second *fps,
 						const char **option);
 EXPORT bool obs_data_item_get_default_frames_per_second(obs_data_item_t *item, struct media_frames_per_second *fps,
 							const char **option);
-EXPORT bool obs_data_item_get_autoselect_frames_per_second(obs_data_item_t *item, struct media_frames_per_second *fps,
-							   const char **option);
+OBS_DEPRECATED EXPORT bool obs_data_item_get_autoselect_frames_per_second(obs_data_item_t *item,
+									  struct media_frames_per_second *fps,
+									  const char **option);
 
 /* ------------------------------------------------------------------------- */
 /* OBS-specific functions */