summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrediano Ziglio <freddy77@gmail.com>2023-07-08 15:47:48 +0100
committerFrediano Ziglio <freddy77@gmail.com>2023-07-09 08:25:14 +0100
commit3892983edab7d9d1bcb808f6bdc4fdcfb3914683 (patch)
tree3ae052239f3a87ab43ac51e73bf798b0f05cf474
parent11149e5d4eb13389af38b30b3f6d4a6c69bfaf60 (diff)
Use visibility instead of just filtering using version script
In case version script support is not available we can still able to filter symbols exported. This for instance will work with linkers not supporting --version-script (like system MacOS one). Use new version macros similar to Glib to detect also deprecated function. Tested that exported symbols remains the same from both Linux and Windows shared libraries. Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
-rw-r--r--src/bio-gio.c1
-rw-r--r--src/channel-cursor.h2
-rw-r--r--src/channel-display.h19
-rw-r--r--src/channel-inputs.h25
-rw-r--r--src/channel-main.h47
-rw-r--r--src/channel-playback.h2
-rw-r--r--src/channel-port.h10
-rw-r--r--src/channel-record.h4
-rw-r--r--src/channel-smartcard.h1
-rw-r--r--src/channel-usbredir.h1
-rw-r--r--src/channel-webdav.h1
-rw-r--r--src/decode-glz.c1
-rw-r--r--src/get-type-declarations.h16
-rw-r--r--src/meson.build52
-rw-r--r--src/qmp-port.h9
-rw-r--r--src/smartcard-manager.h9
-rw-r--r--src/spice-audio.h4
-rw-r--r--src/spice-channel.h16
-rw-r--r--src/spice-client.h3
-rw-r--r--src/spice-common.h1
-rw-r--r--src/spice-file-transfer-task.h6
-rw-r--r--src/spice-grabsequence.c1
-rw-r--r--src/spice-grabsequence.h6
-rw-r--r--src/spice-gtk-session.h4
-rw-r--r--src/spice-option.c1
-rw-r--r--src/spice-option.h2
-rw-r--r--src/spice-session.h10
-rw-r--r--src/spice-uri.h12
-rw-r--r--src/spice-util.c2
-rw-r--r--src/spice-util.h5
-rw-r--r--src/spice-version.h.in29
-rw-r--r--src/spice-widget.h9
-rw-r--r--src/usb-backend.c1
-rw-r--r--src/usb-device-manager.h19
-rw-r--r--src/usb-device-widget.h2
-rw-r--r--src/usbutil.c1
-rw-r--r--src/vmcstream.c1
-rw-r--r--src/vncdisplaykeymap.c2
-rw-r--r--tests/util.c1
39 files changed, 295 insertions, 43 deletions
diff --git a/src/bio-gio.c b/src/bio-gio.c
index fd6c754..5dd1c71 100644
--- a/src/bio-gio.c
+++ b/src/bio-gio.c
@@ -19,6 +19,7 @@
#include <string.h>
#include <glib.h>
+#include "spice-version.h"
#include "spice-util.h"
#include "bio-gio.h"
diff --git a/src/channel-cursor.h b/src/channel-cursor.h
index 442049c..e9293e8 100644
--- a/src/channel-cursor.h
+++ b/src/channel-cursor.h
@@ -96,8 +96,10 @@ struct _SpiceCursorChannelClass {
/* Do not add fields to this struct */
};
+SPICE_GTK_AVAILABLE_IN_ALL
GType spice_cursor_channel_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_34
GType spice_cursor_shape_get_type(void) G_GNUC_CONST;
G_END_DECLS
diff --git a/src/channel-display.h b/src/channel-display.h
index 18fe8f2..7121c6e 100644
--- a/src/channel-display.h
+++ b/src/channel-display.h
@@ -143,32 +143,41 @@ struct _SpiceDisplayChannelClass {
/*< private >*/
};
+SPICE_GTK_AVAILABLE_IN_ALL
GType spice_display_channel_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_35
gboolean spice_display_channel_get_primary(SpiceChannel *channel, guint32 surface_id,
SpiceDisplayPrimary *primary);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_display_channel_change_preferred_compression(SpiceChannel *channel, gint compression);
+SPICE_GTK_DEPRECATED_IN_0_38_FOR(spice_display_channel_change_preferred_video_codec_types)
void spice_display_channel_change_preferred_video_codec_type(SpiceChannel *channel, gint codec_type);
+SPICE_GTK_AVAILABLE_IN_0_38
gboolean spice_display_channel_change_preferred_video_codec_types(SpiceChannel *channel, const gint *codecs,
gsize ncodecs, GError **err);
+SPICE_GTK_AVAILABLE_IN_0_31
GType spice_gl_scanout_get_type (void) G_GNUC_CONST;
+SPICE_GTK_AVAILABLE_IN_0_31
void spice_gl_scanout_free (SpiceGlScanout *scanout);
+SPICE_GTK_AVAILABLE_IN_0_35
const SpiceGlScanout* spice_display_channel_get_gl_scanout(SpiceDisplayChannel *channel);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_display_channel_gl_draw_done(SpiceDisplayChannel *channel);
#ifndef SPICE_DISABLE_DEPRECATED
-G_DEPRECATED_FOR(spice_display_channel_change_preferred_compression)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_display_channel_change_preferred_compression)
void spice_display_change_preferred_compression(SpiceChannel *channel, gint compression);
-G_DEPRECATED_FOR(spice_display_channel_change_preferred_video_codec_type)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_display_channel_change_preferred_video_codec_type)
void spice_display_change_preferred_video_codec_type(SpiceChannel *channel, gint codec_type);
-G_DEPRECATED_FOR(spice_display_channel_get_gl_scanout)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_display_channel_get_gl_scanout)
const SpiceGlScanout* spice_display_get_gl_scanout(SpiceDisplayChannel *channel);
-G_DEPRECATED_FOR(spice_display_channel_get_primary)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_display_channel_get_primary)
gboolean spice_display_get_primary(SpiceChannel *channel, guint32 surface_id,
SpiceDisplayPrimary *primary);
-G_DEPRECATED_FOR(spice_display_channel_gl_draw_done)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_display_channel_gl_draw_done)
void spice_display_gl_draw_done(SpiceDisplayChannel *channel);
#endif
diff --git a/src/channel-inputs.h b/src/channel-inputs.h
index bae87b5..72d39e7 100644
--- a/src/channel-inputs.h
+++ b/src/channel-inputs.h
@@ -80,36 +80,45 @@ struct _SpiceInputsChannelClass {
/* Do not add fields to this struct */
};
+SPICE_GTK_AVAILABLE_IN_ALL
GType spice_inputs_channel_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_inputs_channel_motion(SpiceInputsChannel *channel, gint dx, gint dy, gint button_state);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_inputs_channel_position(SpiceInputsChannel *channel, gint x, gint y, gint display,
gint button_state);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_inputs_channel_button_press(SpiceInputsChannel *channel, gint button, gint button_state);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_inputs_channel_button_release(SpiceInputsChannel *channel, gint button,
gint button_state);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_inputs_channel_key_press(SpiceInputsChannel *channel, guint scancode);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_inputs_channel_key_release(SpiceInputsChannel *channel, guint scancode);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_inputs_channel_set_key_locks(SpiceInputsChannel *channel, guint locks);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_inputs_channel_key_press_and_release(SpiceInputsChannel *channel, guint scancode);
#ifndef SPICE_DISABLE_DEPRECATED
-G_DEPRECATED_FOR(spice_inputs_channel_motion)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_inputs_channel_motion)
void spice_inputs_motion(SpiceInputsChannel *channel, gint dx, gint dy, gint button_state);
-G_DEPRECATED_FOR(spice_inputs_channel_position)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_inputs_channel_position)
void spice_inputs_position(SpiceInputsChannel *channel, gint x, gint y, gint display,
gint button_state);
-G_DEPRECATED_FOR(spice_inputs_channel_button_press)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_inputs_channel_button_press)
void spice_inputs_button_press(SpiceInputsChannel *channel, gint button, gint button_state);
-G_DEPRECATED_FOR(spice_inputs_channel_button_release)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_inputs_channel_button_release)
void spice_inputs_button_release(SpiceInputsChannel *channel, gint button, gint button_state);
-G_DEPRECATED_FOR(spice_inputs_channel_key_press)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_inputs_channel_key_press)
void spice_inputs_key_press(SpiceInputsChannel *channel, guint scancode);
-G_DEPRECATED_FOR(spice_inputs_channel_key_release)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_inputs_channel_key_release)
void spice_inputs_key_release(SpiceInputsChannel *channel, guint scancode);
-G_DEPRECATED_FOR(spice_inputs_channel_set_key_locks)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_inputs_channel_set_key_locks)
void spice_inputs_set_key_locks(SpiceInputsChannel *channel, guint locks);
-G_DEPRECATED_FOR(spice_inputs_channel_key_press_and_release)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_inputs_channel_key_press_and_release)
void spice_inputs_key_press_and_release(SpiceInputsChannel *channel, guint scancode);
#endif
diff --git a/src/channel-main.h b/src/channel-main.h
index 2f8da62..00de0b7 100644
--- a/src/channel-main.h
+++ b/src/channel-main.h
@@ -68,26 +68,37 @@ struct _SpiceMainChannelClass {
/* Do not add fields to this struct */
};
+SPICE_GTK_AVAILABLE_IN_ALL
GType spice_main_channel_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_39
void spice_main_channel_update_display_mm(SpiceMainChannel *channel, int id,
int width_mm, int height_mm, gboolean update);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_main_channel_update_display(SpiceMainChannel *channel, int id, int x, int y, int width,
int height, gboolean update);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_main_channel_update_display_enabled(SpiceMainChannel *channel, int id, gboolean enabled,
gboolean update);
+SPICE_GTK_AVAILABLE_IN_0_35
gboolean spice_main_channel_send_monitor_config(SpiceMainChannel *channel);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_main_channel_clipboard_selection_grab(SpiceMainChannel *channel, guint selection,
guint32 *types, int ntypes);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_main_channel_clipboard_selection_release(SpiceMainChannel *channel, guint selection);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_main_channel_clipboard_selection_notify(SpiceMainChannel *channel, guint selection,
guint32 type, const guchar *data, size_t size);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_main_channel_clipboard_selection_request(SpiceMainChannel *channel, guint selection,
guint32 type);
+SPICE_GTK_AVAILABLE_IN_0_35
gboolean spice_main_channel_agent_test_capability(SpiceMainChannel *channel, guint32 cap);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_main_channel_file_copy_async(SpiceMainChannel *channel,
GFile **sources,
GFileCopyFlags flags,
@@ -97,56 +108,58 @@ void spice_main_channel_file_copy_async(SpiceMainChannel *channel,
GAsyncReadyCallback callback,
gpointer user_data);
+SPICE_GTK_AVAILABLE_IN_0_35
gboolean spice_main_channel_file_copy_finish(SpiceMainChannel *channel,
GAsyncResult *result,
GError **error);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_main_channel_request_mouse_mode(SpiceMainChannel *channel, int mode);
#ifndef SPICE_DISABLE_DEPRECATED
-G_DEPRECATED_FOR(spice_main_channel_clipboard_selection_grab)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_clipboard_selection_grab)
void spice_main_clipboard_grab(SpiceMainChannel *channel, guint32 *types, int ntypes);
-G_DEPRECATED_FOR(spice_main_channel_clipboard_selection_release)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_clipboard_selection_release)
void spice_main_clipboard_release(SpiceMainChannel *channel);
-G_DEPRECATED_FOR(spice_main_channel_clipboard_selection_notify)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_clipboard_selection_notify)
void spice_main_clipboard_notify(SpiceMainChannel *channel, guint32 type, const guchar *data, size_t size);
-G_DEPRECATED_FOR(spice_main_channel_clipboard_selection_request)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_clipboard_selection_request)
void spice_main_clipboard_request(SpiceMainChannel *channel, guint32 type);
-G_DEPRECATED_FOR(spice_main_channel_update_display)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_update_display)
void spice_main_set_display(SpiceMainChannel *channel, int id,int x, int y, int width, int height);
-G_DEPRECATED_FOR(spice_main_channel_update_display)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_update_display)
void spice_main_update_display(SpiceMainChannel *channel, int id, int x, int y, int width,
int height, gboolean update);
-G_DEPRECATED_FOR(spice_main_channel_update_display_enabled)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_update_display_enabled)
void spice_main_set_display_enabled(SpiceMainChannel *channel, int id, gboolean enabled);
-G_DEPRECATED_FOR(spice_main_channel_update_display_enabled)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_update_display_enabled)
void spice_main_update_display_enabled(SpiceMainChannel *channel, int id, gboolean enabled,
gboolean update);
-G_DEPRECATED_FOR(spice_main_channel_send_monitor_config)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_send_monitor_config)
gboolean spice_main_send_monitor_config(SpiceMainChannel *channel);
-G_DEPRECATED_FOR(spice_main_channel_clipboard_selection_grab)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_clipboard_selection_grab)
void spice_main_clipboard_selection_grab(SpiceMainChannel *channel, guint selection, guint32 *types,
int ntypes);
-G_DEPRECATED_FOR(spice_main_channel_clipboard_selection_release)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_clipboard_selection_release)
void spice_main_clipboard_selection_release(SpiceMainChannel *channel, guint selection);
-G_DEPRECATED_FOR(spice_main_channel_clipboard_selection_notify)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_clipboard_selection_notify)
void spice_main_clipboard_selection_notify(SpiceMainChannel *channel, guint selection, guint32 type,
const guchar *data, size_t size);
-G_DEPRECATED_FOR(spice_main_channel_clipboard_selection_request)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_clipboard_selection_request)
void spice_main_clipboard_selection_request(SpiceMainChannel *channel, guint selection,
guint32 type);
-G_DEPRECATED_FOR(spice_main_channel_agent_test_capability)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_agent_test_capability)
gboolean spice_main_agent_test_capability(SpiceMainChannel *channel, guint32 cap);
-G_DEPRECATED_FOR(spice_main_channel_file_copy_async)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_file_copy_async)
void spice_main_file_copy_async(SpiceMainChannel *channel, GFile **sources, GFileCopyFlags flags,
GCancellable *cancellable, GFileProgressCallback progress_callback,
gpointer progress_callback_data, GAsyncReadyCallback callback,
gpointer user_data);
-G_DEPRECATED_FOR(spice_main_channel_file_copy_finish)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_file_copy_finish)
gboolean spice_main_file_copy_finish(SpiceMainChannel *channel, GAsyncResult *result,
GError **error);
-G_DEPRECATED_FOR(spice_main_channel_request_mouse_mode)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_main_channel_request_mouse_mode)
void spice_main_request_mouse_mode(SpiceMainChannel *channel, int mode);
#endif
diff --git a/src/channel-playback.h b/src/channel-playback.h
index 37b894b..e5b534f 100644
--- a/src/channel-playback.h
+++ b/src/channel-playback.h
@@ -71,7 +71,9 @@ struct _SpicePlaybackChannelClass {
/* Do not add fields to this struct */
};
+SPICE_GTK_AVAILABLE_IN_ALL
GType spice_playback_channel_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_4
void spice_playback_channel_set_delay(SpicePlaybackChannel *channel, guint32 delay_ms);
G_END_DECLS
diff --git a/src/channel-port.h b/src/channel-port.h
index 5a86b8a..accbbd2 100644
--- a/src/channel-port.h
+++ b/src/channel-port.h
@@ -63,29 +63,33 @@ struct _SpicePortChannelClass {
/* Do not add fields to this struct */
};
+SPICE_GTK_AVAILABLE_IN_0_15
GType spice_port_channel_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_port_channel_write_async(SpicePortChannel *port,
const void *buffer, gsize count,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
+SPICE_GTK_AVAILABLE_IN_0_35
gssize spice_port_channel_write_finish(SpicePortChannel *port,
GAsyncResult *result, GError **error);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_port_channel_event(SpicePortChannel *port, guint8 event);
#ifndef SPICE_DISABLE_DEPRECATED
-G_DEPRECATED_FOR(spice_port_channel_write_async)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_port_channel_write_async)
void spice_port_write_async(SpicePortChannel *port,
const void *buffer, gsize count,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
-G_DEPRECATED_FOR(spice_port_channel_write_finish)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_port_channel_write_finish)
gssize spice_port_write_finish(SpicePortChannel *port,
GAsyncResult *result, GError **error);
-G_DEPRECATED_FOR(spice_port_channel_event)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_port_channel_event)
void spice_port_event(SpicePortChannel *port, guint8 event);
#endif
diff --git a/src/channel-record.h b/src/channel-record.h
index afbb23d..8c3df85 100644
--- a/src/channel-record.h
+++ b/src/channel-record.h
@@ -71,12 +71,14 @@ struct _SpiceRecordChannelClass {
/* Do not add fields to this struct */
};
+SPICE_GTK_AVAILABLE_IN_ALL
GType spice_record_channel_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_35
void spice_record_channel_send_data(SpiceRecordChannel *channel, gpointer data,
gsize bytes, guint32 time);
#ifndef SPICE_DISABLE_DEPRECATED
-G_DEPRECATED_FOR(spice_record_channel_send_data)
+SPICE_GTK_DEPRECATED_IN_0_35_FOR(spice_record_channel_send_data)
void spice_record_send_data(SpiceRecordChannel *channel, gpointer data,
gsize bytes, guint32 time);
#endif
diff --git a/src/channel-smartcard.h b/src/channel-smartcard.h
index 60ca9fe..e9edbd5 100644
--- a/src/channel-smartcard.h
+++ b/src/channel-smartcard.h
@@ -64,6 +64,7 @@ struct _SpiceSmartcardChannelClass {
/* Do not add fields to this struct */
};
+SPICE_GTK_AVAILABLE_IN_0_7
GType spice_smartcard_channel_get_type(void);
G_END_DECLS
diff --git a/src/channel-usbredir.h b/src/channel-usbredir.h
index a430dfa..c0eef5c 100644
--- a/src/channel-usbredir.h
+++ b/src/channel-usbredir.h
@@ -67,6 +67,7 @@ struct _SpiceUsbredirChannelClass {
/* Do not add fields to this struct */
};
+SPICE_GTK_AVAILABLE_IN_0_8
GType spice_usbredir_channel_get_type(void);
G_END_DECLS
diff --git a/src/channel-webdav.h b/src/channel-webdav.h
index fac877d..960cc47 100644
--- a/src/channel-webdav.h
+++ b/src/channel-webdav.h
@@ -64,6 +64,7 @@ struct _SpiceWebdavChannelClass {
/* Do not add fields to this struct */
};
+SPICE_GTK_AVAILABLE_IN_0_24
GType spice_webdav_channel_get_type(void);
G_END_DECLS
diff --git a/src/decode-glz.c b/src/decode-glz.c
index 3f34098..9aa038b 100644
--- a/src/decode-glz.c
+++ b/src/decode-glz.c
@@ -23,6 +23,7 @@
#include <glib.h>
#include "gio-coroutine.h"
+#include "spice-version.h"
#include "spice-util.h"
#include "decode.h"
diff --git a/src/get-type-declarations.h b/src/get-type-declarations.h
new file mode 100644
index 0000000..864a150
--- /dev/null
+++ b/src/get-type-declarations.h
@@ -0,0 +1,16 @@
+#include "spice-common.h"
+
+SPICE_GTK_AVAILABLE_IN_ALL
+GType spice_inputs_lock_get_type(void) G_GNUC_CONST;
+
+SPICE_GTK_AVAILABLE_IN_ALL
+GType spice_channel_event_get_type(void) G_GNUC_CONST;
+
+SPICE_GTK_AVAILABLE_IN_ALL
+GType spice_session_verify_get_type(void) G_GNUC_CONST;
+
+SPICE_GTK_AVAILABLE_IN_ALL
+GType spice_session_migration_get_type(void) G_GNUC_CONST;
+
+SPICE_GTK_AVAILABLE_IN_ALL
+GType spice_display_key_event_get_type(void) G_GNUC_CONST;
diff --git a/src/meson.build b/src/meson.build
index 68fe7ab..c1f240f 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -19,10 +19,54 @@ else
endif
endif
+script = ''
+# versions, [major, minimum_minor, maximum_minor]
+versions = [[ 0, 1, 43 ]]
+# build a long string to use for loops
+x = 'aaaaaaaaaa'
+x = x.replace('a', 'bbbbbbbbbb')
+
+# loop all versions, generate SPICE_GTK_VERSION_major_minor macros
+foreach version : versions
+ major = version[0]
+ minor = version[1]
+ max_minor = version[2]
+ foreach c : x.split('b')
+ script = '''@0@
+#define SPICE_GTK_VERSION_@1@_@2@ SPICE_GTK_ENCODE_VERSION(@1@, @2@)
+'''.format(script, major, minor)
+ minor += 1
+ if minor > max_minor
+ break
+ endif
+ endforeach
+endforeach
+
+versions = '''2 3 4 5 6 7 8 9 10 11 13 14 15 17 19
+ 20 24 27 30 31 32 33 34 35 36 38 39 40'''.split()
+foreach version: versions
+ script = '''@2@
+#if SPICE_GTK_VERSION_MAX_ALLOWED < SPICE_GTK_VERSION_@0@_@1@
+# define SPICE_GTK_AVAILABLE_IN_@0@_@1@ G_UNAVAILABLE(@0@, @1@)
+#else
+# define SPICE_GTK_AVAILABLE_IN_@0@_@1@ SPICE_GTK_EXTERN
+#endif
+
+#if SPICE_GTK_VERSION_MIN_REQUIRED >= SPICE_GTK_VERSION_@0@_@1@
+# define SPICE_GTK_DEPRECATED_IN_@0@_@1@ G_DEPRECATED
+# define SPICE_GTK_DEPRECATED_IN_@0@_@1@_FOR(f) G_DEPRECATED_FOR(f)
+#else
+# define SPICE_GTK_DEPRECATED_IN_@0@_@1@ SPICE_GTK_EXTERN
+# define SPICE_GTK_DEPRECATED_IN_@0@_@1@_FOR(f) SPICE_GTK_EXTERN
+#endif
+'''.format('0', version, script)
+endforeach
+
version_data = configuration_data()
version_data.set('SPICE_GTK_MAJOR_VERSION', major)
version_data.set('SPICE_GTK_MINOR_VERSION', minor)
version_data.set('SPICE_GTK_MICRO_VERSION', micro)
+version_data.set('SPICE_VERSION_MACROS', script)
spice_version_h = configure_file(input : 'spice-version.h.in',
output : 'spice-version.h',
configuration : version_data)
@@ -63,6 +107,7 @@ spice_marshals = gnome.genmarshal('spice-marshal', sources : 'spice-marshal.txt'
spice_client_glib_enums = gnome.mkenums_simple('spice-glib-enums',
sources : ['spice-channel.h', 'channel-inputs.h', 'spice-session.h'],
install_header : true,
+ body_prefix: '#include "get-type-declarations.h"',
install_dir : spice_gtk_includedir / 'spice-client-glib-2.0')
spice_client_glib_introspection_sources = [
@@ -218,7 +263,8 @@ spice_client_glib_lib = library('spice-client-glib-2.0', spice_client_glib_sourc
include_directories : spice_gtk_include,
link_args : [spice_glib_version_script],
link_depends : spice_client_glib_syms,
- dependencies : spice_glib_deps)
+ dependencies : spice_glib_deps,
+ gnu_symbol_visibility: 'hidden')
spice_client_glib_dep = declare_dependency(sources : [spice_marshals[1], spice_client_glib_enums[1]],
link_with : spice_client_glib_lib,
@@ -278,6 +324,7 @@ if spice_gtk_has_gtk
spice_widget_enums = gnome.mkenums_simple('spice-widget-enums',
sources : 'spice-widget.h',
install_header : true,
+ body_prefix: '#include "get-type-declarations.h"',
install_dir : spice_gtk_includedir / 'spice-client-gtk-3.0')
spice_client_gtk_introspection_sources = [
@@ -399,7 +446,8 @@ if spice_gtk_has_gtk
install : true,
link_args : [spice_gtk_version_script],
link_depends : spice_client_gtk_syms,
- dependencies : [spice_client_glib_dep, spice_gtk_deps, spice_wayland_deps])
+ dependencies : [spice_client_glib_dep, spice_gtk_deps, spice_wayland_deps],
+ gnu_symbol_visibility: 'hidden')
spice_client_gtk_dep = declare_dependency(sources : spice_widget_enums[1],
link_with : spice_client_gtk_lib,
diff --git a/src/qmp-port.h b/src/qmp-port.h
index f05a5ec..352c0d0 100644
--- a/src/qmp-port.h
+++ b/src/qmp-port.h
@@ -88,30 +88,39 @@ typedef struct _SpiceQmpStatus {
gchar *status;
} SpiceQmpStatus;
+SPICE_GTK_AVAILABLE_IN_0_36
GType spice_qmp_port_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_36
SpiceQmpPort *spice_qmp_port_get(SpicePortChannel *channel);
+SPICE_GTK_AVAILABLE_IN_0_36
void spice_qmp_port_vm_action_async(SpiceQmpPort *self,
SpiceQmpPortVmAction action,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
+SPICE_GTK_AVAILABLE_IN_0_36
gboolean spice_qmp_port_vm_action_finish(SpiceQmpPort *self,
GAsyncResult *result,
GError **error);
+SPICE_GTK_AVAILABLE_IN_0_36
GType spice_qmp_status_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_36
SpiceQmpStatus *spice_qmp_status_ref(SpiceQmpStatus *status);
+SPICE_GTK_AVAILABLE_IN_0_36
void spice_qmp_status_unref(SpiceQmpStatus *status);
+SPICE_GTK_AVAILABLE_IN_0_36
void spice_qmp_port_query_status_async(SpiceQmpPort *self,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
+SPICE_GTK_AVAILABLE_IN_0_36
SpiceQmpStatus *spice_qmp_port_query_status_finish(SpiceQmpPort *self,
GAsyncResult *result,
GError **error);
diff --git a/src/smartcard-manager.h b/src/smartcard-manager.h
index b7a8b25..dccd63b 100644
--- a/src/smartcard-manager.h
+++ b/src/smartcard-manager.h
@@ -88,15 +88,24 @@ struct _SpiceSmartcardManagerClass
gpointer _spice_reserved[10];
};
+SPICE_GTK_AVAILABLE_IN_0_7
GType spice_smartcard_manager_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_7
GType spice_smartcard_reader_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_7
SpiceSmartcardManager *spice_smartcard_manager_get(void);
+SPICE_GTK_AVAILABLE_IN_0_7
gboolean spice_smartcard_manager_insert_card(SpiceSmartcardManager *manager);
+SPICE_GTK_AVAILABLE_IN_0_7
gboolean spice_smartcard_manager_remove_card(SpiceSmartcardManager *manager);
+SPICE_GTK_AVAILABLE_IN_0_7
gboolean spice_smartcard_reader_is_software(SpiceSmartcardReader *reader);
+SPICE_GTK_AVAILABLE_IN_0_20
gboolean spice_smartcard_reader_insert_card(SpiceSmartcardReader *reader);
+SPICE_GTK_AVAILABLE_IN_0_20
gboolean spice_smartcard_reader_remove_card(SpiceSmartcardReader *reader);
+SPICE_GTK_AVAILABLE_IN_0_20
GList *spice_smartcard_manager_get_readers(SpiceSmartcardManager *manager);
G_END_DECLS
diff --git a/src/spice-audio.h b/src/spice-audio.h
index d6ecf64..ff737ea 100644
--- a/src/spice-audio.h
+++ b/src/spice-audio.h
@@ -98,12 +98,14 @@ struct _SpiceAudioClass {
gpointer _spice_reserved[6];
};
+SPICE_GTK_AVAILABLE_IN_ALL
GType spice_audio_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_8
SpiceAudio* spice_audio_get(SpiceSession *session, GMainContext *context);
#ifndef SPICE_DISABLE_DEPRECATED
-G_DEPRECATED_FOR(spice_audio_get)
+SPICE_GTK_DEPRECATED_IN_0_8_FOR(spice_audio_get)
SpiceAudio* spice_audio_new(SpiceSession *session, GMainContext *context, const char *name);
#endif
diff --git a/src/spice-channel.h b/src/spice-channel.h
index 1e163eb..c06b6d6 100644
--- a/src/spice-channel.h
+++ b/src/spice-channel.h
@@ -122,28 +122,40 @@ struct _SpiceChannelClass
gpointer _spice_reserved[8];
};
+SPICE_GTK_AVAILABLE_IN_ALL
GType spice_channel_get_type(void);
typedef void (*spice_msg_handler)(SpiceChannel *channel, SpiceMsgIn *in);
+SPICE_GTK_AVAILABLE_IN_ALL
SpiceChannel *spice_channel_new(SpiceSession *s, int type, int id);
+SPICE_GTK_AVAILABLE_IN_ALL
gboolean spice_channel_connect(SpiceChannel *channel);
+SPICE_GTK_AVAILABLE_IN_0_2
gboolean spice_channel_open_fd(SpiceChannel *channel, int fd);
+SPICE_GTK_AVAILABLE_IN_ALL
void spice_channel_disconnect(SpiceChannel *channel, SpiceChannelEvent reason);
+SPICE_GTK_AVAILABLE_IN_ALL
gboolean spice_channel_test_capability(SpiceChannel *channel, guint32 cap);
+SPICE_GTK_AVAILABLE_IN_0_6
gboolean spice_channel_test_common_capability(SpiceChannel *channel, guint32 cap);
+SPICE_GTK_AVAILABLE_IN_0_15
void spice_channel_flush_async(SpiceChannel *channel, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
+SPICE_GTK_AVAILABLE_IN_0_15
gboolean spice_channel_flush_finish(SpiceChannel *channel, GAsyncResult *result, GError **error);
#ifndef SPICE_DISABLE_DEPRECATED
-G_DEPRECATED
+SPICE_GTK_DEPRECATED_IN_0_13
void spice_channel_set_capability(SpiceChannel *channel, guint32 cap);
-G_DEPRECATED
+SPICE_GTK_DEPRECATED_IN_0_27
void spice_channel_destroy(SpiceChannel *channel);
#endif
+SPICE_GTK_AVAILABLE_IN_0_7
const gchar* spice_channel_type_to_string(gint type);
+SPICE_GTK_AVAILABLE_IN_0_20
gint spice_channel_string_to_type(const gchar *str);
+SPICE_GTK_AVAILABLE_IN_0_24
const GError* spice_channel_get_error(SpiceChannel *channel);
G_END_DECLS
diff --git a/src/spice-client.h b/src/spice-client.h
index bf95e93..b753f60 100644
--- a/src/spice-client.h
+++ b/src/spice-client.h
@@ -29,11 +29,11 @@
/* spice/gtk */
#include "spice-types.h"
+#include "spice-version.h"
#include "spice-session.h"
#include "spice-channel.h"
#include "spice-option.h"
#include "spice-uri.h"
-#include "spice-version.h"
#include "channel-main.h"
#include "channel-display.h"
@@ -89,6 +89,7 @@ typedef enum
#define SPICE_CLIENT_USB_DEVICE_LOST SPICE_CLIENT_ERROR_USB_DEVICE_LOST
#endif
+SPICE_GTK_AVAILABLE_IN_0_7
GQuark spice_client_error_quark(void);
G_END_DECLS
diff --git a/src/spice-common.h b/src/spice-common.h
index 52beddd..faa4cf8 100644
--- a/src/spice-common.h
+++ b/src/spice-common.h
@@ -29,4 +29,5 @@
#include "common/messages.h"
#include "common/marshaller.h"
+#include "spice-version.h"
#include "spice-util.h"
diff --git a/src/spice-file-transfer-task.h b/src/spice-file-transfer-task.h
index d04f0ef..f2e483a 100644
--- a/src/spice-file-transfer-task.h
+++ b/src/spice-file-transfer-task.h
@@ -39,12 +39,18 @@ G_BEGIN_DECLS
typedef struct _SpiceFileTransferTask SpiceFileTransferTask;
typedef struct _SpiceFileTransferTaskClass SpiceFileTransferTaskClass;
+SPICE_GTK_AVAILABLE_IN_0_31
GType spice_file_transfer_task_get_type(void) G_GNUC_CONST;
+SPICE_GTK_AVAILABLE_IN_0_31
char* spice_file_transfer_task_get_filename(SpiceFileTransferTask *self);
+SPICE_GTK_AVAILABLE_IN_0_31
void spice_file_transfer_task_cancel(SpiceFileTransferTask *self);
+SPICE_GTK_AVAILABLE_IN_0_33
guint64 spice_file_transfer_task_get_total_bytes(SpiceFileTransferTask *self);
+SPICE_GTK_AVAILABLE_IN_0_33
guint64 spice_file_transfer_task_get_transferred_bytes(SpiceFileTransferTask *self);
+SPICE_GTK_AVAILABLE_IN_0_31
double spice_file_transfer_task_get_progress(SpiceFileTransferTask *self);
G_END_DECLS
diff --git a/src/spice-grabsequence.c b/src/spice-grabsequence.c
index dd454c9..078bfa6 100644
--- a/src/spice-grabsequence.c
+++ b/src/spice-grabsequence.c
@@ -23,6 +23,7 @@
#include <string.h>
#include <gdk/gdk.h>
+#include "spice-version.h"
#include "spice-grabsequence.h"
#include "spice-grabsequence-priv.h"
diff --git a/src/spice-grabsequence.h b/src/spice-grabsequence.h
index 7f61ba1..9b4d6c3 100644
--- a/src/spice-grabsequence.h
+++ b/src/spice-grabsequence.h
@@ -40,12 +40,18 @@ G_BEGIN_DECLS
**/
typedef struct _SpiceGrabSequence SpiceGrabSequence;
+SPICE_GTK_AVAILABLE_IN_0_3
GType spice_grab_sequence_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_3
SpiceGrabSequence *spice_grab_sequence_new(guint nkeysyms, guint *keysyms);
+SPICE_GTK_AVAILABLE_IN_0_3
SpiceGrabSequence *spice_grab_sequence_new_from_string(const gchar *str);
+SPICE_GTK_AVAILABLE_IN_0_3
SpiceGrabSequence *spice_grab_sequence_copy(SpiceGrabSequence *sequence);
+SPICE_GTK_AVAILABLE_IN_0_3
void spice_grab_sequence_free(SpiceGrabSequence *sequence);
+SPICE_GTK_AVAILABLE_IN_0_3
gchar *spice_grab_sequence_as_string(SpiceGrabSequence *sequence);
diff --git a/src/spice-gtk-session.h b/src/spice-gtk-session.h
index e79475f..33fbe5b 100644
--- a/src/spice-gtk-session.h
+++ b/src/spice-gtk-session.h
@@ -46,10 +46,14 @@ typedef struct _SpiceGtkSession SpiceGtkSession;
*/
typedef struct _SpiceGtkSessionClass SpiceGtkSessionClass;
+SPICE_GTK_AVAILABLE_IN_0_8
GType spice_gtk_session_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_8
SpiceGtkSession *spice_gtk_session_get(SpiceSession *session);
+SPICE_GTK_AVAILABLE_IN_0_8
void spice_gtk_session_copy_to_guest(SpiceGtkSession *self);
+SPICE_GTK_AVAILABLE_IN_0_8
void spice_gtk_session_paste_from_guest(SpiceGtkSession *self);
G_END_DECLS
diff --git a/src/spice-option.c b/src/spice-option.c
index a1eacc3..abcaa1b 100644
--- a/src/spice-option.c
+++ b/src/spice-option.c
@@ -19,6 +19,7 @@
#include <stdlib.h>
#include <glib-object.h>
#include <glib/gi18n-lib.h>
+#include "spice-version.h"
#include "spice-session.h"
#include "spice-util.h"
#include "spice-channel-priv.h"
diff --git a/src/spice-option.h b/src/spice-option.h
index 853c8c5..9bb73c1 100644
--- a/src/spice-option.h
+++ b/src/spice-option.h
@@ -26,7 +26,9 @@
G_BEGIN_DECLS
+SPICE_GTK_AVAILABLE_IN_0_7
GOptionGroup* spice_get_option_group(void);
+SPICE_GTK_AVAILABLE_IN_0_7
void spice_set_session_option(SpiceSession *session);
G_END_DECLS
diff --git a/src/spice-session.h b/src/spice-session.h
index d54ad41..855db6a 100644
--- a/src/spice-session.h
+++ b/src/spice-session.h
@@ -104,16 +104,26 @@ struct _SpiceSessionClass
gpointer _spice_reserved[10];
};
+SPICE_GTK_AVAILABLE_IN_ALL
GType spice_session_get_type(void);
+SPICE_GTK_AVAILABLE_IN_ALL
SpiceSession *spice_session_new(void);
+SPICE_GTK_AVAILABLE_IN_ALL
gboolean spice_session_connect(SpiceSession *session);
+SPICE_GTK_AVAILABLE_IN_0_2
gboolean spice_session_open_fd(SpiceSession *session, int fd);
+SPICE_GTK_AVAILABLE_IN_ALL
void spice_session_disconnect(SpiceSession *session);
+SPICE_GTK_AVAILABLE_IN_ALL
GList *spice_session_get_channels(SpiceSession *session);
+SPICE_GTK_AVAILABLE_IN_0_8
gboolean spice_session_has_channel_type(SpiceSession *session, gint type);
+SPICE_GTK_AVAILABLE_IN_0_8
gboolean spice_session_get_read_only(SpiceSession *session);
+SPICE_GTK_AVAILABLE_IN_0_24
SpiceURI *spice_session_get_proxy_uri(SpiceSession *session);
+SPICE_GTK_AVAILABLE_IN_0_27
gboolean spice_session_is_for_migration(SpiceSession *session);
G_END_DECLS
diff --git a/src/spice-uri.h b/src/spice-uri.h
index ec4c983..c8166b9 100644
--- a/src/spice-uri.h
+++ b/src/spice-uri.h
@@ -48,18 +48,30 @@ typedef struct _SpiceURI SpiceURI;
typedef struct _SpiceURIClass SpiceURIClass;
typedef struct _SpiceURIPrivate SpiceURIPrivate;
+SPICE_GTK_AVAILABLE_IN_0_24
GType spice_uri_get_type(void) G_GNUC_CONST;
+SPICE_GTK_AVAILABLE_IN_0_24
const gchar* spice_uri_get_scheme(SpiceURI* uri);
+SPICE_GTK_AVAILABLE_IN_0_24
void spice_uri_set_scheme(SpiceURI* uri, const gchar* scheme);
+SPICE_GTK_AVAILABLE_IN_0_24
const gchar* spice_uri_get_hostname(SpiceURI* uri);
+SPICE_GTK_AVAILABLE_IN_0_24
void spice_uri_set_hostname(SpiceURI* uri, const gchar* hostname);
+SPICE_GTK_AVAILABLE_IN_0_24
guint spice_uri_get_port(SpiceURI* uri);
+SPICE_GTK_AVAILABLE_IN_0_24
void spice_uri_set_port(SpiceURI* uri, guint port);
+SPICE_GTK_AVAILABLE_IN_0_24
gchar *spice_uri_to_string(SpiceURI* uri);
+SPICE_GTK_AVAILABLE_IN_0_24
const gchar* spice_uri_get_user(SpiceURI* uri);
+SPICE_GTK_AVAILABLE_IN_0_24
void spice_uri_set_user(SpiceURI* uri, const gchar* user);
+SPICE_GTK_AVAILABLE_IN_0_24
const gchar* spice_uri_get_password(SpiceURI* uri);
+SPICE_GTK_AVAILABLE_IN_0_24
void spice_uri_set_password(SpiceURI* uri, const gchar* password);
G_END_DECLS
diff --git a/src/spice-util.c b/src/spice-util.c
index 30d83c8..aefe128 100644
--- a/src/spice-util.c
+++ b/src/spice-util.c
@@ -22,9 +22,9 @@
#include <string.h>
#include <glib.h>
#include <glib-object.h>
+#include "spice-version.h"
#include "spice-util-priv.h"
#include "spice-util.h"
-#include "spice-util-priv.h"
/**
* SECTION:spice-util
diff --git a/src/spice-util.h b/src/spice-util.h
index 421b4b0..c283b07 100644
--- a/src/spice-util.h
+++ b/src/spice-util.h
@@ -21,14 +21,19 @@
G_BEGIN_DECLS
+SPICE_GTK_AVAILABLE_IN_ALL
void spice_util_set_debug(gboolean enabled);
+SPICE_GTK_AVAILABLE_IN_ALL
gboolean spice_util_get_debug(void);
+SPICE_GTK_AVAILABLE_IN_ALL
const gchar *spice_util_get_version_string(void);
+SPICE_GTK_AVAILABLE_IN_0_8
gulong spice_g_signal_connect_object(gpointer instance,
const gchar *detailed_signal,
GCallback c_handler,
gpointer gobject,
GConnectFlags connect_flags);
+SPICE_GTK_AVAILABLE_IN_0_11
gchar* spice_uuid_to_string(const guint8 uuid[16]);
#define SPICE_DEBUG(fmt, ...) \
diff --git a/src/spice-version.h.in b/src/spice-version.h.in
index ca9f55a..b847a22 100644
--- a/src/spice-version.h.in
+++ b/src/spice-version.h.in
@@ -71,5 +71,34 @@
(SPICE_GTK_MAJOR_VERSION == (major) && SPICE_GTK_MINOR_VERSION == (minor) && \
SPICE_GTK_MICRO_VERSION >= (micro)))
+#define SPICE_GTK_ENCODE_VERSION(major,minor) ((major) << 16 | (minor) << 8)
+#define SPICE_GTK_VERSION_CURRENT \
+ SPICE_GTK_ENCODE_VERSION(SPICE_GTK_MAJOR_VERSION, SPICE_GTK_MINOR_VERSION)
+
+#if !defined (SPICE_GTK_VERSION_MIN_ALLOWED) || (SPICE_GTK_VERSION_MIN_ALLOWED == 0)
+# undef SPICE_GTK_VERSION_MIN_ALLOWED
+# define SPICE_GTK_VERSION_MIN_ALLOWED SPICE_GTK_VERSION_CURRENT
+#endif
+
+#if !defined (SPICE_GTK_VERSION_MAX_ALLOWED) || (SPICE_GTK_VERSION_MAX_ALLOWED == 0)
+# undef SPICE_GTK_VERSION_MAX_ALLOWED
+# define SPICE_GTK_VERSION_MAX_ALLOWED SPICE_GTK_VERSION_CURRENT
+#endif
+
+#if SPICE_GTK_VERSION_MIN_REQUIRED > SPICE_GTK_VERSION_CURRENT
+#error "SPICE_GTK_VERSION_MIN_REQUIRED must be <= SPICE_GTK_VERSION_CURRENT"
+#endif
+#if SPICE_GTK_VERSION_MAX_ALLOWED < SPICE_GTK_VERSION_MIN_REQUIRED
+#error "SPICE_GTK_VERSION_MAX_ALLOWED must be >= SPICE_GTK_VERSION_MIN_REQUIRED"
+#endif
+
+#if defined(__GNUC__) && __GNUC__ >= 4
+# define SPICE_GTK_EXTERN __attribute__ ((visibility ("default")))
+#else
+# define SPICE_GTK_EXTERN extern
+#endif
+
+#define SPICE_GTK_AVAILABLE_IN_ALL SPICE_GTK_EXTERN
+@SPICE_VERSION_MACROS@
#endif /* __SPICE_VERSION_H__ */
diff --git a/src/spice-widget.h b/src/spice-widget.h
index 60a7514..778f75b 100644
--- a/src/spice-widget.h
+++ b/src/spice-widget.h
@@ -68,17 +68,26 @@ typedef enum
SPICE_DISPLAY_KEY_EVENT_CLICK = 3,
} SpiceDisplayKeyEvent;
+SPICE_GTK_AVAILABLE_IN_ALL
GType spice_display_get_type(void);
+SPICE_GTK_AVAILABLE_IN_ALL
SpiceDisplay* spice_display_new(SpiceSession *session, int channel_id);
+SPICE_GTK_AVAILABLE_IN_0_13
SpiceDisplay* spice_display_new_with_monitor(SpiceSession *session, gint channel_id, gint monitor_id);
+SPICE_GTK_AVAILABLE_IN_0_40
void spice_display_keyboard_ungrab(SpiceDisplay *display);
+SPICE_GTK_AVAILABLE_IN_ALL
void spice_display_mouse_ungrab(SpiceDisplay *display);
+SPICE_GTK_AVAILABLE_IN_ALL
void spice_display_set_grab_keys(SpiceDisplay *display, SpiceGrabSequence *seq);
+SPICE_GTK_AVAILABLE_IN_ALL
SpiceGrabSequence *spice_display_get_grab_keys(SpiceDisplay *display);
+SPICE_GTK_AVAILABLE_IN_ALL
void spice_display_send_keys(SpiceDisplay *display, const guint *keyvals,
int nkeyvals, SpiceDisplayKeyEvent kind);
+SPICE_GTK_AVAILABLE_IN_ALL
GdkPixbuf *spice_display_get_pixbuf(SpiceDisplay *display);
G_END_DECLS
diff --git a/src/usb-backend.c b/src/usb-backend.c
index dd1ce99..e6d1c31 100644
--- a/src/usb-backend.c
+++ b/src/usb-backend.c
@@ -34,6 +34,7 @@
#endif
#include "usbredirhost.h"
#include "usbredirparser.h"
+#include "spice-version.h"
#include "spice-util.h"
#include "usb-backend.h"
#include "usb-emulation.h"
diff --git a/src/usb-device-manager.h b/src/usb-device-manager.h
index 1cebeb8..1bff418 100644
--- a/src/usb-device-manager.h
+++ b/src/usb-device-manager.h
@@ -96,62 +96,79 @@ struct _SpiceUsbDeviceManagerClass
gpointer _spice_reserved[10];
};
+SPICE_GTK_AVAILABLE_IN_0_8
GType spice_usb_device_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_8
GType spice_usb_device_manager_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_8
gchar *spice_usb_device_get_description(SpiceUsbDevice *device, const gchar *format);
+SPICE_GTK_AVAILABLE_IN_0_27
gconstpointer spice_usb_device_get_libusb_device(const SpiceUsbDevice *device);
+SPICE_GTK_AVAILABLE_IN_0_8
SpiceUsbDeviceManager *spice_usb_device_manager_get(SpiceSession *session,
GError **err);
+SPICE_GTK_AVAILABLE_IN_0_8
GPtrArray *spice_usb_device_manager_get_devices(SpiceUsbDeviceManager *manager);
+SPICE_GTK_AVAILABLE_IN_0_20
GPtrArray* spice_usb_device_manager_get_devices_with_filter(SpiceUsbDeviceManager *manager,
const gchar *filter);
+SPICE_GTK_AVAILABLE_IN_0_8
gboolean spice_usb_device_manager_is_device_connected(SpiceUsbDeviceManager *manager,
SpiceUsbDevice *device);
+SPICE_GTK_AVAILABLE_IN_0_8
void spice_usb_device_manager_connect_device_async(SpiceUsbDeviceManager *manager,
SpiceUsbDevice *device,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
+SPICE_GTK_AVAILABLE_IN_0_32
void spice_usb_device_manager_disconnect_device_async(SpiceUsbDeviceManager *manager,
SpiceUsbDevice *device,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
+SPICE_GTK_AVAILABLE_IN_0_8
gboolean spice_usb_device_manager_connect_device_finish(SpiceUsbDeviceManager *manager,
GAsyncResult *res,
GError **err);
+SPICE_GTK_AVAILABLE_IN_0_32
gboolean spice_usb_device_manager_disconnect_device_finish(SpiceUsbDeviceManager *manager,
GAsyncResult *res,
GError **err);
#ifndef SPICE_DISABLE_DEPRECATED
-G_DEPRECATED_FOR(spice_usb_device_manager_disconnect_device_async)
+SPICE_GTK_DEPRECATED_IN_0_32_FOR(spice_usb_device_manager_disconnect_device_async)
void spice_usb_device_manager_disconnect_device(SpiceUsbDeviceManager *manager,
SpiceUsbDevice *device);
#endif
+SPICE_GTK_AVAILABLE_IN_0_10
gboolean
spice_usb_device_manager_can_redirect_device(SpiceUsbDeviceManager *manager,
SpiceUsbDevice *device,
GError **err);
+SPICE_GTK_AVAILABLE_IN_0_32
gboolean spice_usb_device_manager_is_redirecting(SpiceUsbDeviceManager *manager);
+SPICE_GTK_AVAILABLE_IN_0_38
gboolean
spice_usb_device_manager_create_shared_cd_device(SpiceUsbDeviceManager *manager,
gchar *filename,
GError **err);
+SPICE_GTK_AVAILABLE_IN_0_38
gboolean
spice_usb_device_manager_is_device_shared_cd(SpiceUsbDeviceManager *manager,
SpiceUsbDevice *device);
+SPICE_GTK_AVAILABLE_IN_0_40
SpiceUsbDevice *
spice_usb_device_manager_allocate_device_for_file_descriptor(SpiceUsbDeviceManager *manager,
int file_descriptor,
diff --git a/src/usb-device-widget.h b/src/usb-device-widget.h
index c8befb7..d2c4518 100644
--- a/src/usb-device-widget.h
+++ b/src/usb-device-widget.h
@@ -50,7 +50,9 @@ typedef struct _SpiceUsbDeviceWidget SpiceUsbDeviceWidget;
typedef struct _SpiceUsbDeviceWidgetClass SpiceUsbDeviceWidgetClass;
typedef struct _SpiceUsbDeviceWidgetPrivate SpiceUsbDeviceWidgetPrivate;
+SPICE_GTK_AVAILABLE_IN_0_9
GType spice_usb_device_widget_get_type(void);
+SPICE_GTK_AVAILABLE_IN_0_9
GtkWidget *spice_usb_device_widget_new(SpiceSession *session,
const gchar *device_format_string);
diff --git a/src/usbutil.c b/src/usbutil.c
index b34739e..b162d0c 100644
--- a/src/usbutil.c
+++ b/src/usbutil.c
@@ -35,6 +35,7 @@
#include <sys/stat.h>
#endif
#include "usbutil.h"
+#include "spice-version.h"
#include "spice-util-priv.h"
#define VENDOR_NAME_LEN (122 - sizeof(void *))
diff --git a/src/vmcstream.c b/src/vmcstream.c
index e26b939..d5cc48e 100644
--- a/src/vmcstream.c
+++ b/src/vmcstream.c
@@ -18,6 +18,7 @@
#include <string.h>
+#include "spice-version.h"
#include "vmcstream.h"
#include "spice-channel-priv.h"
#include "gio-coroutine.h"
diff --git a/src/vncdisplaykeymap.c b/src/vncdisplaykeymap.c
index e09e330..23766d9 100644
--- a/src/vncdisplaykeymap.c
+++ b/src/vncdisplaykeymap.c
@@ -14,7 +14,7 @@
#include <gdk/gdkkeysyms.h>
#include "vncdisplaykeymap.h"
-#include "spice-util.h"
+#include "spice-common.h"
#undef G_LOG_DOMAIN
#define G_LOG_DOMAIN "vnc-keymap"
diff --git a/tests/util.c b/tests/util.c
index fd75334..a5e357c 100644
--- a/tests/util.c
+++ b/tests/util.c
@@ -4,6 +4,7 @@
#include <stdlib.h>
#define __SPICE_CLIENT_H_INSIDE__
+#include "spice-version.h"
#include "spice-util-priv.h"
enum {