[gtk+/xi2: 1180/1239] Plug memory leaks.
- From: Carlos Garnacho <carlosg src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtk+/xi2: 1180/1239] Plug memory leaks.
- Date: Tue, 29 Sep 2009 10:57:44 +0000 (UTC)
commit 487ad9df2e006606974831e8ceb3d4ab00aed213
Author: Carlos Garnacho <carlos gnome org>
Date: Fri Sep 18 00:03:11 2009 +0200
Plug memory leaks.
gdk/gdkdevice.c | 18 +++++++++++++++++-
gdk/gdkwindow.c | 6 ++++++
gdk/x11/gdkdevicemanager-core.c | 15 +++++++++++++++
gdk/x11/gdkdevicemanager-xi2.c | 5 +++++
4 files changed, 43 insertions(+), 1 deletions(-)
---
diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c
index ec4be9b..4ae8b75 100644
--- a/gdk/gdkdevice.c
+++ b/gdk/gdkdevice.c
@@ -160,8 +160,10 @@ static void
gdk_device_dispose (GObject *object)
{
GdkDevicePrivate *priv;
+ GdkDevice *device;
- priv = GDK_DEVICE_GET_PRIVATE (object);
+ device = GDK_DEVICE (object);
+ priv = GDK_DEVICE_GET_PRIVATE (device);
if (priv->relative)
{
@@ -170,6 +172,20 @@ gdk_device_dispose (GObject *object)
priv->relative = NULL;
}
+ if (priv->axes)
+ {
+ g_array_free (priv->axes, TRUE);
+ priv->axes = NULL;
+ }
+
+ g_free (device->name);
+ g_free (device->keys);
+ g_free (device->axes);
+
+ device->name = NULL;
+ device->keys = NULL;
+ device->axes = NULL;
+
G_OBJECT_CLASS (gdk_device_parent_class)->dispose (object);
}
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index ac4f422..860e8c3 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -596,6 +596,12 @@ gdk_window_finalize (GObject *object)
if (obj->device_cursor)
g_hash_table_destroy (obj->device_cursor);
+ if (obj->device_events)
+ g_hash_table_destroy (obj->device_events);
+
+ if (obj->devices_inside)
+ g_list_free (obj->devices_inside);
+
G_OBJECT_CLASS (parent_class)->finalize (object);
}
diff --git a/gdk/x11/gdkdevicemanager-core.c b/gdk/x11/gdkdevicemanager-core.c
index 42207f3..765bf23 100644
--- a/gdk/x11/gdkdevicemanager-core.c
+++ b/gdk/x11/gdkdevicemanager-core.c
@@ -33,6 +33,7 @@
#define HAS_FOCUS(toplevel) \
((toplevel)->has_focus || (toplevel)->has_pointer_focus)
+static void gdk_device_manager_core_finalize (GObject *object);
static void gdk_device_manager_core_constructed (GObject *object);
static GList * gdk_device_manager_core_get_devices (GdkDeviceManager *device_manager,
@@ -56,6 +57,7 @@ gdk_device_manager_core_class_init (GdkDeviceManagerCoreClass *klass)
GdkDeviceManagerClass *device_manager_class = GDK_DEVICE_MANAGER_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ object_class->finalize = gdk_device_manager_core_finalize;
object_class->constructed = gdk_device_manager_core_constructed;
device_manager_class->get_devices = gdk_device_manager_core_get_devices;
}
@@ -97,6 +99,19 @@ gdk_device_manager_core_init (GdkDeviceManagerCore *device_manager)
}
static void
+gdk_device_manager_core_finalize (GObject *object)
+{
+ GdkDeviceManagerCore *device_manager_core;
+
+ device_manager_core = GDK_DEVICE_MANAGER_CORE (object);
+
+ g_object_unref (device_manager_core->core_pointer);
+ g_object_unref (device_manager_core->core_keyboard);
+
+ G_OBJECT_CLASS (gdk_device_manager_core_parent_class)->finalize (object);
+}
+
+static void
gdk_device_manager_core_constructed (GObject *object)
{
GdkDeviceManagerCore *device_manager;
diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c
index 082623d..01b811f 100644
--- a/gdk/x11/gdkdevicemanager-xi2.c
+++ b/gdk/x11/gdkdevicemanager-xi2.c
@@ -357,8 +357,13 @@ gdk_device_manager_xi2_finalize (GObject *object)
device_manager_xi2 = GDK_DEVICE_MANAGER_XI2 (object);
+ g_list_foreach (device_manager_xi2->master_devices, (GFunc) g_object_unref, NULL);
g_list_free (device_manager_xi2->master_devices);
+
+ g_list_foreach (device_manager_xi2->slave_devices, (GFunc) g_object_unref, NULL);
g_list_free (device_manager_xi2->slave_devices);
+
+ g_list_foreach (device_manager_xi2->floating_devices, (GFunc) g_object_unref, NULL);
g_list_free (device_manager_xi2->floating_devices);
g_hash_table_destroy (device_manager_xi2->id_table);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]