summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/reference/spice-gtk-sections.txt1
-rw-r--r--src/channel-main.c40
-rw-r--r--src/channel-main.h1
-rw-r--r--src/map-file1
-rw-r--r--src/spice-glib-sym-file1
5 files changed, 36 insertions, 8 deletions
diff --git a/doc/reference/spice-gtk-sections.txt b/doc/reference/spice-gtk-sections.txt
index 5d7b176..2f3e09e 100644
--- a/doc/reference/spice-gtk-sections.txt
+++ b/doc/reference/spice-gtk-sections.txt
@@ -63,6 +63,7 @@ SpiceMainChannelClass
<SUBSECTION>
spice_main_set_display
spice_main_set_display_enabled
+spice_main_update_display_enabled
spice_main_send_monitor_config
spice_main_agent_test_capability
spice_main_clipboard_selection_grab
diff --git a/src/channel-main.c b/src/channel-main.c
index 42c9a65..03e407e 100644
--- a/src/channel-main.c
+++ b/src/channel-main.c
@@ -2788,19 +2788,24 @@ void spice_main_clipboard_selection_request(SpiceMainChannel *channel, guint sel
}
/**
- * spice_main_set_display_enabled:
+ * spice_main_update_display_enabled:
* @channel: a #SpiceMainChannel
* @id: display ID (if -1: set all displays)
* @enabled: wether display @id is enabled
+ * @update: if %TRUE, update guest display state after 1sec.
*
- * When sending monitor configuration to agent guest, don't set
- * display @id, which the agent translates to disabling the display
- * id. Note: this will take effect next time the monitor
- * configuration is sent.
+ * When sending monitor configuration to agent guest, if @enabled is %FALSE,
+ * don't set display @id, which the agent translates to disabling the display
+ * id. If @enabled is %TRUE, the monitor will be included in the next monitor
+ * update. Note: this will take effect next time the monitor configuration is
+ * sent.
*
- * Since: 0.6
+ * If @update is %FALSE, no server update will be triggered by this call, but
+ * the value will be saved and used in the next configuration update.
+ *
+ * Since: 0.30
**/
-void spice_main_set_display_enabled(SpiceMainChannel *channel, int id, gboolean enabled)
+void spice_main_update_display_enabled(SpiceMainChannel *channel, int id, gboolean enabled, gboolean update)
{
SpiceDisplayState display_state = enabled ? DISPLAY_ENABLED : DISPLAY_DISABLED;
g_return_if_fail(channel != NULL);
@@ -2821,7 +2826,26 @@ void spice_main_set_display_enabled(SpiceMainChannel *channel, int id, gboolean
c->display[id].display_state = display_state;
}
- update_display_timer(channel, 1);
+ if (update)
+ update_display_timer(channel, 1);
+}
+
+/**
+ * spice_main_set_display_enabled:
+ * @channel: a #SpiceMainChannel
+ * @id: display ID (if -1: set all displays)
+ * @enabled: wether display @id is enabled
+ *
+ * When sending monitor configuration to agent guest, don't set
+ * display @id, which the agent translates to disabling the display
+ * id. Note: this will take effect next time the monitor
+ * configuration is sent.
+ *
+ * Since: 0.6
+ **/
+void spice_main_set_display_enabled(SpiceMainChannel *channel, int id, gboolean enabled)
+{
+ spice_main_update_display_enabled(channel, id, enabled, TRUE);
}
static void file_xfer_completed(SpiceFileXferTask *task, GError *error)
diff --git a/src/channel-main.h b/src/channel-main.h
index 3e4fc42..86bb46b 100644
--- a/src/channel-main.h
+++ b/src/channel-main.h
@@ -72,6 +72,7 @@ void spice_main_set_display(SpiceMainChannel *channel, int id,
void spice_main_update_display(SpiceMainChannel *channel, int id,
int x, int y, int width, int height, gboolean update);
void spice_main_set_display_enabled(SpiceMainChannel *channel, int id, gboolean enabled);
+void spice_main_update_display_enabled(SpiceMainChannel *channel, int id, gboolean enabled, gboolean update);
gboolean spice_main_send_monitor_config(SpiceMainChannel *channel);
void spice_main_clipboard_selection_grab(SpiceMainChannel *channel, guint selection, guint32 *types, int ntypes);
diff --git a/src/map-file b/src/map-file
index d5a073f..a9abc61 100644
--- a/src/map-file
+++ b/src/map-file
@@ -71,6 +71,7 @@ spice_main_send_monitor_config;
spice_main_set_display;
spice_main_set_display_enabled;
spice_main_update_display;
+spice_main_update_display_enabled;
spice_playback_channel_get_type;
spice_playback_channel_set_delay;
spice_port_channel_get_type;
diff --git a/src/spice-glib-sym-file b/src/spice-glib-sym-file
index 3a8da93..1d62716 100644
--- a/src/spice-glib-sym-file
+++ b/src/spice-glib-sym-file
@@ -48,6 +48,7 @@ spice_main_send_monitor_config
spice_main_set_display
spice_main_set_display_enabled
spice_main_update_display
+spice_main_update_display_enabled
spice_playback_channel_get_type
spice_playback_channel_set_delay
spice_port_channel_get_type