[gtk+] x11: Return XSetting without copying
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] x11: Return XSetting without copying
- Date: Tue, 19 Feb 2013 13:47:22 +0000 (UTC)
commit 63f0797e70ee0a141d22d928bc6b35b638effb08
Author: Benjamin Otte <otte redhat com>
Date: Sun Feb 10 00:02:53 2013 +0100
x11: Return XSetting without copying
gdk/x11/gdkscreen-x11.c | 11 ++-------
gdk/x11/xsettings-client.c | 20 ++---------------
gdk/x11/xsettings-client.h | 6 ++--
gdk/x11/xsettings-common.c | 47 --------------------------------------------
gdk/x11/xsettings-common.h | 2 -
5 files changed, 9 insertions(+), 77 deletions(-)
---
diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
index 6e08250..cb26ee5 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
@@ -1353,8 +1353,7 @@ gdk_x11_screen_get_setting (GdkScreen *screen,
{
GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
const char *xsettings_name = NULL;
- XSettingsResult result;
- XSettingsSetting *setting = NULL;
+ const XSettingsSetting *setting;
gboolean success = FALSE;
GValue tmp_val = G_VALUE_INIT;
@@ -1362,9 +1361,8 @@ gdk_x11_screen_get_setting (GdkScreen *screen,
if (!xsettings_name)
goto out;
- result = xsettings_client_get_setting (x11_screen->xsettings_client,
- xsettings_name, &setting);
- if (result != XSETTINGS_SUCCESS)
+ setting = xsettings_client_get_setting (x11_screen->xsettings_client, xsettings_name);
+ if (setting == NULL)
goto out;
switch (setting->type)
@@ -1413,9 +1411,6 @@ gdk_x11_screen_get_setting (GdkScreen *screen,
g_value_unset (&tmp_val);
out:
- if (setting)
- xsettings_setting_free (setting);
-
if (success)
return TRUE;
else
diff --git a/gdk/x11/xsettings-client.c b/gdk/x11/xsettings-client.c
index 77aef1e..87b7b0d 100644
--- a/gdk/x11/xsettings-client.c
+++ b/gdk/x11/xsettings-client.c
@@ -531,25 +531,11 @@ xsettings_client_destroy (XSettingsClient *client)
free (client);
}
-XSettingsResult
+const XSettingsSetting *
xsettings_client_get_setting (XSettingsClient *client,
- const char *name,
- XSettingsSetting **setting)
+ const char *name)
{
- XSettingsSetting *search;
-
- if (client->settings == NULL)
- return XSETTINGS_NO_ENTRY;
-
- search = g_hash_table_lookup (client->settings, name);
-
- if (search)
- {
- *setting = xsettings_setting_copy (search);
- return *setting ? XSETTINGS_SUCCESS : XSETTINGS_NO_MEM;
- }
- else
- return XSETTINGS_NO_ENTRY;
+ return g_hash_table_lookup (client->settings, name);
}
Bool
diff --git a/gdk/x11/xsettings-client.h b/gdk/x11/xsettings-client.h
index 0e30641..629e280 100644
--- a/gdk/x11/xsettings-client.h
+++ b/gdk/x11/xsettings-client.h
@@ -63,9 +63,9 @@ void xsettings_client_set_ungrab_func (XSettingsClient *client,
void xsettings_client_destroy (XSettingsClient *client);
Bool xsettings_client_process_event (XSettingsClient *client,
XEvent *xev);
-XSettingsResult xsettings_client_get_setting (XSettingsClient *client,
- const char *name,
- XSettingsSetting **setting);
+const XSettingsSetting *
+ xsettings_client_get_setting (XSettingsClient *client,
+ const char *name);
#ifdef __cplusplus
}
diff --git a/gdk/x11/xsettings-common.c b/gdk/x11/xsettings-common.c
index a57269f..d8f3d37 100644
--- a/gdk/x11/xsettings-common.c
+++ b/gdk/x11/xsettings-common.c
@@ -31,53 +31,6 @@
#include <X11/Xlib.h>
#include <X11/Xmd.h> /* For CARD32 */
-XSettingsSetting *
-xsettings_setting_copy (XSettingsSetting *setting)
-{
- XSettingsSetting *result;
- size_t str_len;
-
- result = malloc (sizeof *result);
- if (!result)
- return NULL;
-
- str_len = strlen (setting->name);
- result->name = malloc (str_len + 1);
- if (!result->name)
- goto err;
-
- memcpy (result->name, setting->name, str_len + 1);
-
- result->type = setting->type;
-
- switch (setting->type)
- {
- case XSETTINGS_TYPE_INT:
- result->data.v_int = setting->data.v_int;
- break;
- case XSETTINGS_TYPE_COLOR:
- result->data.v_color = setting->data.v_color;
- break;
- case XSETTINGS_TYPE_STRING:
- str_len = strlen (setting->data.v_string);
- result->data.v_string = malloc (str_len + 1);
- if (!result->data.v_string)
- goto err;
-
- memcpy (result->data.v_string, setting->data.v_string, str_len + 1);
- break;
- }
-
- return result;
-
- err:
- if (result->name)
- free (result->name);
- free (result);
-
- return NULL;
-}
-
int
xsettings_setting_equal (XSettingsSetting *setting_a,
XSettingsSetting *setting_b)
diff --git a/gdk/x11/xsettings-common.h b/gdk/x11/xsettings-common.h
index 5fac6c6..e90471b 100644
--- a/gdk/x11/xsettings-common.h
+++ b/gdk/x11/xsettings-common.h
@@ -38,7 +38,6 @@ extern "C" {
#define xsettings_client_set_grab_func _gdk_x11_xsettings_client_set_grab_func
#define xsettings_client_set_ungrab_func _gdk_x11_xsettings_client_set_ungrab_func
#define xsettings_client_process_event _gdk_x11_xsettings_client_process_event
-#define xsettings_setting_copy _gdk_x11_xsettings_setting_copy
#define xsettings_setting_equal _gdk_x11_xsettings_setting_equal
#define xsettings_setting_free _gdk_x11_xsettings_setting_free
@@ -91,7 +90,6 @@ struct _XSettingsSetting
} data;
};
-XSettingsSetting *xsettings_setting_copy (XSettingsSetting *setting);
void xsettings_setting_free (XSettingsSetting *setting);
int xsettings_setting_equal (XSettingsSetting *setting_a,
XSettingsSetting *setting_b);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]