[mutter] data-device: Refactor data source management by the drag grab
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] data-device: Refactor data source management by the drag grab
- Date: Tue, 19 Jan 2016 13:27:46 +0000 (UTC)
commit f053c090839a648eabd44a36f66f2fc1656608a8
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue Jan 12 21:56:39 2016 +0100
data-device: Refactor data source management by the drag grab
Move to a separate meta_wayland_drag_grab_set_source() so we keep
the weak pointer management in a single place.
https://bugzilla.gnome.org/show_bug.cgi?id=760805
src/wayland/meta-wayland-data-device.c | 28 +++++++++++++++++++---------
1 files changed, 19 insertions(+), 9 deletions(-)
---
diff --git a/src/wayland/meta-wayland-data-device.c b/src/wayland/meta-wayland-data-device.c
index 3d60690..7897c44 100644
--- a/src/wayland/meta-wayland-data-device.c
+++ b/src/wayland/meta-wayland-data-device.c
@@ -258,6 +258,23 @@ destroy_drag_focus (struct wl_listener *listener, void *data)
grab->drag_focus_data_device = NULL;
}
+static void
+meta_wayland_drag_grab_set_source (MetaWaylandDragGrab *drag_grab,
+ MetaWaylandDataSource *source)
+{
+ if (drag_grab->drag_data_source)
+ g_object_weak_unref (G_OBJECT (drag_grab->drag_data_source),
+ drag_grab_data_source_destroyed,
+ drag_grab);
+
+ drag_grab->drag_data_source = source;
+
+ if (source)
+ g_object_weak_ref (G_OBJECT (source),
+ drag_grab_data_source_destroyed,
+ drag_grab);
+}
+
void
meta_wayland_drag_grab_set_focus (MetaWaylandDragGrab *drag_grab,
MetaWaylandSurface *surface)
@@ -343,10 +360,7 @@ data_device_end_drag_grab (MetaWaylandDragGrab *drag_grab)
wl_list_remove (&drag_grab->drag_icon_listener.link);
}
- if (drag_grab->drag_data_source)
- g_object_weak_unref (G_OBJECT (drag_grab->drag_data_source),
- drag_grab_data_source_destroyed,
- drag_grab);
+ meta_wayland_drag_grab_set_source (drag_grab, NULL);
if (drag_grab->feedback_actor)
{
@@ -460,11 +474,7 @@ meta_wayland_data_device_start_drag (MetaWaylandDataDevice *data
drag_grab->drag_start_x = stage_pos.x;
drag_grab->drag_start_y = stage_pos.y;
- g_object_weak_ref (G_OBJECT (source),
- drag_grab_data_source_destroyed,
- drag_grab);
-
- drag_grab->drag_data_source = source;
+ meta_wayland_drag_grab_set_source (drag_grab, source);
meta_wayland_data_device_set_dnd_source (data_device,
drag_grab->drag_data_source);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]