[Spice-devel] [spice-gtk v1 1/2] gtk-session: clipboard: rename functions
Jakub Janku
jjanku at redhat.com
Mon Jan 28 17:16:03 UTC 2019
Hi,
On Mon, Jan 28, 2019 at 1:23 PM Victor Toso <victortoso at redhat.com> wrote:
>
> From: Victor Toso <me at victortoso.com>
>
> * Attaching the 'guest_' prefix for actions that were started from
> guest agent, those renames are:
>
> clipboard_grab -> guest_clipboard_grab
> clipboard_release -> guest_clipboard_release
> clipboard_request -> guest_clipboard_request_data
> clipboard_request_send_data -> guest_clipboard_request_send_data
>
> * Attaching the 'client_' prefix for actions that were triggered by
> client and sent/received by guest agent, those renames are:
>
> clipboard_get -> client_clipboard_request_data
> clipboard_got_from_guest -> client_clipboard_received_data
>
> * Changed from 'clipboard_' to 'clipboard_handler' prefix for
> callbacks related to GtkClipboard, those renames are:
>
> clipboard_clear -> clipboard_handler_clear
> clipboard_owner_change -> clipboard_handler_owner_change_cb
> clipboard_received_text_cb -> clipboard_handler_received_text_cb
> clipboard_get_targets -> clipboard_handler_get_targets_cb
These 4 seem a bit weird.
I would either change them all to "clipboard_*_handler", or "clipboard_*_cb".
I wouldn't use "handler" together with "cb".
They could also bear the "client_" prefix as they're all concerning
clipboard on the client side.
>
> Signed-off-by: Victor Toso <me at victortoso.com>
> ---
> src/spice-gtk-session.c | 123 ++++++++++++++++++++++++----------------
> 1 file changed, 75 insertions(+), 48 deletions(-)
>
> diff --git a/src/spice-gtk-session.c b/src/spice-gtk-session.c
> index 1a19bca..ac2ba0b 100644
> --- a/src/spice-gtk-session.c
> +++ b/src/spice-gtk-session.c
> @@ -95,9 +95,9 @@ struct _SpiceGtkSessionPrivate {
>
> /* ------------------------------------------------------------------ */
> /* Prototypes for private functions */
> -static void clipboard_owner_change(GtkClipboard *clipboard,
> - GdkEventOwnerChange *event,
> - gpointer user_data);
> +static void clipboard_handler_owner_change_cb(GtkClipboard *clipboard,
> + GdkEventOwnerChange *event,
> + gpointer user_data);
> static void channel_new(SpiceSession *session, SpiceChannel *channel,
> gpointer user_data);
> static void channel_destroy(SpiceSession *session, SpiceChannel *channel,
> @@ -182,10 +182,10 @@ static void spice_gtk_session_init(SpiceGtkSession *self)
>
> s->clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
> g_signal_connect(G_OBJECT(s->clipboard), "owner-change",
> - G_CALLBACK(clipboard_owner_change), self);
> + G_CALLBACK(clipboard_handler_owner_change_cb), self);
> s->clipboard_primary = gtk_clipboard_get(GDK_SELECTION_PRIMARY);
> g_signal_connect(G_OBJECT(s->clipboard_primary), "owner-change",
> - G_CALLBACK(clipboard_owner_change), self);
> + G_CALLBACK(clipboard_handler_owner_change_cb), self);
> spice_g_signal_connect_object(keymap, "state-changed",
> G_CALLBACK(keymap_modifiers_changed), self, 0);
> }
> @@ -222,13 +222,13 @@ static void spice_gtk_session_dispose(GObject *gobject)
> /* release stuff */
> if (s->clipboard) {
> g_signal_handlers_disconnect_by_func(s->clipboard,
> - G_CALLBACK(clipboard_owner_change), self);
> + G_CALLBACK(clipboard_handler_owner_change_cb), self);
> s->clipboard = NULL;
> }
>
> if (s->clipboard_primary) {
> g_signal_handlers_disconnect_by_func(s->clipboard_primary,
> - G_CALLBACK(clipboard_owner_change), self);
> + G_CALLBACK(clipboard_handler_owner_change_cb), self);
> s->clipboard_primary = NULL;
> }
>
> @@ -537,10 +537,10 @@ static gpointer free_weak_ref(gpointer data)
> return object;
> }
>
> -static void clipboard_get_targets(GtkClipboard *clipboard,
> - GdkAtom *atoms,
> - gint n_atoms,
> - gpointer user_data)
> +static void clipboard_handler_get_targets_cb(GtkClipboard *clipboard,
> + GdkAtom *atoms,
> + gint n_atoms,
> + gpointer user_data)
> {
> SpiceGtkSession *self = free_weak_ref(user_data);
>
> @@ -635,9 +635,10 @@ static void clipboard_get_targets(GtkClipboard *clipboard,
> * emits owner-change event; On Wayland that does not happen as spice-gtk still is
> * the owner of the clipboard.
> */
> -static void clipboard_owner_change(GtkClipboard *clipboard,
> - GdkEventOwnerChange *event,
> - gpointer user_data)
> +static void
> +clipboard_handler_owner_change_cb(GtkClipboard *clipboard,
> + GdkEventOwnerChange *event,
> + gpointer user_data)
> {
> g_return_if_fail(SPICE_IS_GTK_SESSION(user_data));
>
> @@ -676,7 +677,8 @@ static void clipboard_owner_change(GtkClipboard *clipboard,
> s->clipboard_by_guest[selection] = FALSE;
> s->clip_hasdata[selection] = TRUE;
> if (s->auto_clipboard_enable && !read_only(self))
> - gtk_clipboard_request_targets(clipboard, clipboard_get_targets,
> + gtk_clipboard_request_targets(clipboard,
> + clipboard_handler_get_targets_cb,
> get_weak_ref(self));
> }
>
> @@ -689,9 +691,14 @@ typedef struct
> guint selection;
> } RunInfo;
>
> -static void clipboard_got_from_guest(SpiceMainChannel *main, guint selection,
> - guint type, const guchar *data, guint size,
> - gpointer user_data)
> +/* Only After client_clipboard_request_data */
lowercase a in "After"?
> +static void
> +client_clipboard_received_data(SpiceMainChannel *main,
> + guint selection,
> + guint type,
> + const guchar *data,
> + guint size,
> + gpointer user_data)
> {
> RunInfo *ri = user_data;
> SpiceGtkSessionPrivate *s = ri->self->priv;
> @@ -730,9 +737,11 @@ static void clipboard_agent_connected(RunInfo *ri)
> g_main_loop_quit(ri->loop);
> }
>
> -static void clipboard_get(GtkClipboard *clipboard,
> - GtkSelectionData *selection_data,
> - guint info, gpointer user_data)
> +static void
> +client_clipboard_request_data(GtkClipboard *clipboard,
> + GtkSelectionData *selection_data,
> + guint info,
> + gpointer user_data)
> {
> g_return_if_fail(SPICE_IS_GTK_SESSION(user_data));
>
> @@ -758,8 +767,7 @@ static void clipboard_get(GtkClipboard *clipboard,
> ri.self = self;
>
> clipboard_handler = g_signal_connect(s->main, "main-clipboard-selection",
> - G_CALLBACK(clipboard_got_from_guest),
> - &ri);
> + G_CALLBACK(client_clipboard_received_data), &ri);
> agent_handler = g_signal_connect_swapped(s->main, "notify::agent-connected",
> G_CALLBACK(clipboard_agent_connected),
> &ri);
> @@ -770,7 +778,7 @@ static void clipboard_get(GtkClipboard *clipboard,
>
> g_object_get(s->main, "agent-connected", &agent_connected, NULL);
> if (!agent_connected) {
> - SPICE_DEBUG("canceled clipboard_get, before running loop");
> + SPICE_DEBUG("canceled client_clipboard_request_data, before running loop");
replace hardcoded function name with "%s" and __func__?
> goto cleanup;
> }
>
> @@ -790,16 +798,21 @@ cleanup:
> g_signal_handler_disconnect(s->main, agent_handler);
> }
>
> -static void clipboard_clear(GtkClipboard *clipboard, gpointer user_data)
> +static void
> +clipboard_handler_clear(GtkClipboard *clipboard, gpointer user_data)
> {
> SPICE_DEBUG("clipboard_clear");
I think this should be updated in this patch too (instead of 2/2).
> /* We watch for clipboard ownership changes and act on those, so we
> don't need to do anything here */
> }
>
> -static gboolean clipboard_grab(SpiceMainChannel *main, guint selection,
> - guint32* types, guint32 ntypes,
> - gpointer user_data)
> +/* Guest agent is sending guest's clipboard metadata */
> +static gboolean
> +guest_clipboard_grab(SpiceMainChannel *main,
> + guint selection,
> + guint32* types,
> + guint32 ntypes,
> + gpointer user_data)
> {
> g_return_val_if_fail(SPICE_IS_GTK_SESSION(user_data), FALSE);
>
> @@ -848,8 +861,8 @@ static gboolean clipboard_grab(SpiceMainChannel *main, guint selection,
> if (!gtk_clipboard_set_with_owner(cb,
> targets,
> num_targets,
> - clipboard_get,
> - clipboard_clear,
> + client_clipboard_request_data,
> + clipboard_handler_clear,
> G_OBJECT(self))) {
> g_warning("clipboard grab failed");
> return FALSE;
> @@ -906,9 +919,9 @@ static char *fixup_clipboard_text(SpiceGtkSession *self, const char *text, int *
> return conv;
> }
>
> -static void clipboard_received_text_cb(GtkClipboard *clipboard,
> - const gchar *text,
> - gpointer user_data)
> +static void clipboard_handler_received_text_cb(GtkClipboard *clipboard,
> + const gchar *text,
> + gpointer user_data)
> {
> SpiceGtkSession *self = free_weak_ref(user_data);
> char *conv = NULL;
> @@ -951,7 +964,8 @@ notify_agent:
> g_free(conv);
> }
>
> -static void clipboard_received_cb(GtkClipboard *clipboard,
> +static void
> +guest_clipboard_request_send_data(GtkClipboard *clipboard,
> GtkSelectionData *selection_data,
> gpointer user_data)
This function contains the following line:
| g_warning("clipboard_received for unsupported type: %s", name);
Needs update too.
> {
> @@ -995,16 +1009,20 @@ static void clipboard_received_cb(GtkClipboard *clipboard,
>
> const guchar *data = gtk_selection_data_get_data(selection_data);
>
> - /* text should be handled through clipboard_received_text_cb(), not
> - * clipboard_received_cb().
> + /* text should be handled through clipboard_handler_received_text_cb(), not
> + * guest_clipboard_request_send_data()
> */
> g_warn_if_fail(type != VD_AGENT_CLIPBOARD_UTF8_TEXT);
>
> spice_main_channel_clipboard_selection_notify(s->main, selection, type, data, len);
> }
>
> -static gboolean clipboard_request(SpiceMainChannel *main, guint selection,
> - guint type, gpointer user_data)
> +/* Guest agent is requesting client's clipboard data */
> +static gboolean
> +guest_clipboard_request_data(SpiceMainChannel *main,
> + guint selection,
> + guint type,
> + gpointer user_data)
> {
> g_return_val_if_fail(SPICE_IS_GTK_SESSION(user_data), FALSE);
>
> @@ -1023,7 +1041,8 @@ static gboolean clipboard_request(SpiceMainChannel *main, guint selection,
> return FALSE;
>
> if (type == VD_AGENT_CLIPBOARD_UTF8_TEXT) {
> - gtk_clipboard_request_text(cb, clipboard_received_text_cb,
> + gtk_clipboard_request_text(cb,
> + clipboard_handler_received_text_cb,
> get_weak_ref(self));
> } else {
> for (m = 0; m < SPICE_N_ELEMENTS(atom2agent); m++) {
> @@ -1034,15 +1053,18 @@ static gboolean clipboard_request(SpiceMainChannel *main, guint selection,
> g_return_val_if_fail(m < SPICE_N_ELEMENTS(atom2agent), FALSE);
>
> atom = gdk_atom_intern_static_string(atom2agent[m].xatom);
> - gtk_clipboard_request_contents(cb, atom, clipboard_received_cb,
> + gtk_clipboard_request_contents(cb, atom, guest_clipboard_request_send_data,
> get_weak_ref(self));
> }
>
> return TRUE;
> }
>
> -static void clipboard_release(SpiceMainChannel *main, guint selection,
> - gpointer user_data)
> +/* Guest agent is clearing last guest's clipboard metadata */
> +static void
> +guest_clipboard_release(SpiceMainChannel *main,
> + guint selection,
> + gpointer user_data)
> {
> g_return_if_fail(SPICE_IS_GTK_SESSION(user_data));
>
> @@ -1073,11 +1095,11 @@ static void channel_new(SpiceSession *session, SpiceChannel *channel,
> SPICE_DEBUG("Changing main channel from %p to %p", s->main, channel);
> s->main = SPICE_MAIN_CHANNEL(channel);
> g_signal_connect(channel, "main-clipboard-selection-grab",
> - G_CALLBACK(clipboard_grab), self);
> + G_CALLBACK(guest_clipboard_grab), self);
> g_signal_connect(channel, "main-clipboard-selection-request",
> - G_CALLBACK(clipboard_request), self);
> + G_CALLBACK(guest_clipboard_request_data), self);
> g_signal_connect(channel, "main-clipboard-selection-release",
> - G_CALLBACK(clipboard_release), self);
> + G_CALLBACK(guest_clipboard_release), self);
> }
> if (SPICE_IS_INPUTS_CHANNEL(channel)) {
> spice_g_signal_connect_object(channel, "inputs-modifiers",
> @@ -1207,7 +1229,8 @@ void spice_gtk_session_copy_to_guest(SpiceGtkSession *self)
> int selection = VD_AGENT_CLIPBOARD_SELECTION_CLIPBOARD;
>
> if (s->clip_hasdata[selection] && !s->clip_grabbed[selection]) {
> - gtk_clipboard_request_targets(s->clipboard, clipboard_get_targets,
> + gtk_clipboard_request_targets(s->clipboard,
> + clipboard_handler_get_targets_cb,
> get_weak_ref(self));
> }
> }
> @@ -1233,8 +1256,12 @@ void spice_gtk_session_paste_from_guest(SpiceGtkSession *self)
> return;
> }
>
> - if (!gtk_clipboard_set_with_owner(s->clipboard, s->clip_targets[selection], s->nclip_targets[selection],
> - clipboard_get, clipboard_clear, G_OBJECT(self))) {
> + if (!gtk_clipboard_set_with_owner(s->clipboard,
> + s->clip_targets[selection],
> + s->nclip_targets[selection],
> + client_clipboard_request_data,
> + clipboard_handler_clear,
> + G_OBJECT(self))) {
> g_warning("Clipboard grab failed");
> return;
> }
> --
> 2.20.1
>
Otherwise seems good to me. But I would consider delaying this patch
until the bug is fixed. At the moment, it might result in a real mess
in the ongoing discussions.
Cheers,
Jakub
More information about the Spice-devel
mailing list