From 04ec9e46baa8464211d0be14fb372136d8e7045a Mon Sep 17 00:00:00 2001 From: Olivier Fourdan <fourdan.olivier@wanadoo.fr> Date: Fri, 30 Aug 2002 12:50:45 +0000 Subject: [PATCH] Remove xsettings sample implementation (as we'll use gtk mechanism anyway) (Old svn revision: 10516) --- src/Makefile.am | 6 +- src/Makefile.in | 42 +--- src/settings.c | 63 ----- src/xsettings-client.c | 536 ----------------------------------------- src/xsettings-client.h | 68 ------ src/xsettings-common.c | 264 -------------------- src/xsettings-common.h | 127 ---------- 7 files changed, 4 insertions(+), 1102 deletions(-) delete mode 100644 src/xsettings-client.c delete mode 100644 src/xsettings-client.h delete mode 100644 src/xsettings-common.c delete mode 100644 src/xsettings-common.h diff --git a/src/Makefile.am b/src/Makefile.am index 8a2c05f5c..8f27dabf6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,11 +28,7 @@ xfwm4_SOURCES = \ parserc.h \ pixmap.h \ settings.h \ - workspaces.h \ - xsettings-common.c \ - xsettings-common.h \ - xsettings-client.c \ - xsettings-client.h + workspaces.h xfwm4_CFLAGS = @CFLAGS@ @X_CFLAGS@ @BASE_DEPENDENCIES_CFLAGS@ \ -DG_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED \ diff --git a/src/Makefile.in b/src/Makefile.in index 1a602bed5..7f4d5d79e 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -109,11 +109,7 @@ xfwm4_SOURCES = \ parserc.h \ pixmap.h \ settings.h \ - workspaces.h \ - xsettings-common.c \ - xsettings-common.h \ - xsettings-client.c \ - xsettings-client.h + workspaces.h xfwm4_CFLAGS = @CFLAGS@ @X_CFLAGS@ @BASE_DEPENDENCIES_CFLAGS@ \ @@ -134,9 +130,7 @@ am_xfwm4_OBJECTS = xfwm4-client.$(OBJEXT) xfwm4-events.$(OBJEXT) \ xfwm4-keyboard.$(OBJEXT) xfwm4-main.$(OBJEXT) \ xfwm4-menu.$(OBJEXT) xfwm4-misc.$(OBJEXT) \ xfwm4-parserc.$(OBJEXT) xfwm4-pixmap.$(OBJEXT) \ - xfwm4-settings.$(OBJEXT) xfwm4-workspaces.$(OBJEXT) \ - xfwm4-xsettings-common.$(OBJEXT) \ - xfwm4-xsettings-client.$(OBJEXT) + xfwm4-settings.$(OBJEXT) xfwm4-workspaces.$(OBJEXT) xfwm4_OBJECTS = $(am_xfwm4_OBJECTS) xfwm4_DEPENDENCIES = xfwm4_LDFLAGS = @@ -160,9 +154,7 @@ am__depfiles_maybe = depfiles @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-parserc.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-pixmap.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-settings.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-workspaces.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-xsettings-client.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-xsettings-common.Po +@AMDEP_TRUE@ ./$(DEPDIR)/xfwm4-workspaces.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -221,8 +213,6 @@ xfwm4-parserc.$(OBJEXT): parserc.c xfwm4-pixmap.$(OBJEXT): pixmap.c xfwm4-settings.$(OBJEXT): settings.c xfwm4-workspaces.$(OBJEXT): workspaces.c -xfwm4-xsettings-common.$(OBJEXT): xsettings-common.c -xfwm4-xsettings-client.$(OBJEXT): xsettings-client.c xfwm4$(EXEEXT): $(xfwm4_OBJECTS) $(xfwm4_DEPENDENCIES) @rm -f xfwm4$(EXEEXT) $(LINK) $(xfwm4_LDFLAGS) $(xfwm4_OBJECTS) $(xfwm4_LDADD) $(LIBS) @@ -247,8 +237,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-pixmap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-settings.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-workspaces.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-xsettings-client.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xfwm4-xsettings-common.Po@am__quote@ distclean-depend: -rm -rf ./$(DEPDIR) @@ -432,30 +420,6 @@ xfwm4-workspaces.obj: workspaces.c @AMDEP_TRUE@ depfile='$(DEPDIR)/xfwm4-workspaces.Po' tmpdepfile='$(DEPDIR)/xfwm4-workspaces.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-workspaces.obj `cygpath -w workspaces.c` - -xfwm4-xsettings-common.o: xsettings-common.c -@AMDEP_TRUE@ source='xsettings-common.c' object='xfwm4-xsettings-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/xfwm4-xsettings-common.Po' tmpdepfile='$(DEPDIR)/xfwm4-xsettings-common.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-xsettings-common.o `test -f 'xsettings-common.c' || echo '$(srcdir)/'`xsettings-common.c - -xfwm4-xsettings-common.obj: xsettings-common.c -@AMDEP_TRUE@ source='xsettings-common.c' object='xfwm4-xsettings-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/xfwm4-xsettings-common.Po' tmpdepfile='$(DEPDIR)/xfwm4-xsettings-common.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-xsettings-common.obj `cygpath -w xsettings-common.c` - -xfwm4-xsettings-client.o: xsettings-client.c -@AMDEP_TRUE@ source='xsettings-client.c' object='xfwm4-xsettings-client.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/xfwm4-xsettings-client.Po' tmpdepfile='$(DEPDIR)/xfwm4-xsettings-client.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-xsettings-client.o `test -f 'xsettings-client.c' || echo '$(srcdir)/'`xsettings-client.c - -xfwm4-xsettings-client.obj: xsettings-client.c -@AMDEP_TRUE@ source='xsettings-client.c' object='xfwm4-xsettings-client.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/xfwm4-xsettings-client.Po' tmpdepfile='$(DEPDIR)/xfwm4-xsettings-client.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xfwm4_CFLAGS) $(CFLAGS) -c -o xfwm4-xsettings-client.obj `cygpath -w xsettings-client.c` CCDEPMODE = @CCDEPMODE@ uninstall-info-am: diff --git a/src/settings.c b/src/settings.c index 1b22def0b..fc3d6f9df 100644 --- a/src/settings.c +++ b/src/settings.c @@ -15,7 +15,6 @@ oroborus - (c) 2001 Ken Lynch xfwm4 - (c) 2002 Olivier Fourdan - xsettings sample implementation, by Owen Taylor (c) 2001 Red Hat, Inc. */ #ifdef HAVE_CONFIG_H @@ -33,7 +32,6 @@ #include "gtk_style.h" #include "gtktoxevent.h" #include "workspaces.h" -#include "xsettings-client.h" #include "debug.h" MyKey keys[KEY_COUNT]; @@ -60,13 +58,6 @@ MyPixmap sides[3][2]; MyPixmap corners[4][2]; MyPixmap buttons[BUTTON_COUNT][3]; MyPixmap title[5][2]; -XSettingsClient *client; - -/* Forward decls */ -static void notify_cb (const char *, XSettingsAction, XSettingsSetting *, void *); -static GdkFilterReturn client_event_filter (GdkXEvent *, GdkEvent *, gpointer); -static void watch_cb (Window, Bool, long, void *); - void loadSettings() { @@ -513,58 +504,4 @@ void initSettings(void) title_colors[ACTIVE].allocated = FALSE; title_colors[INACTIVE].gc = NULL; title_colors[INACTIVE].allocated = FALSE; - /* client = xsettings_client_new (gdk_display, DefaultScreen (gdk_display), notify_cb, watch_cb, NULL); */ -} - -static void notify_cb (const char *name, XSettingsAction action, XSettingsSetting *setting, void *data) -{ - int row; - char *text[4]; - - printf("xsettings notification\n"); - switch (action) - { - case XSETTINGS_ACTION_NEW: - break; - case XSETTINGS_ACTION_CHANGED: - break; - case XSETTINGS_ACTION_DELETED: - break; - } -} - -static GdkFilterReturn client_event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data) -{ - if (xsettings_client_process_event (client, (XEvent *)xevent)) - { - return GDK_FILTER_REMOVE; - } - else - { - return GDK_FILTER_CONTINUE; - } } - -static void watch_cb (Window window, Bool is_start, long mask, void *cb_data) -{ - GdkWindow *gdkwin; - - if (is_start) - { - printf("Starting watch on %#lx with mask %#lx\n", window, mask); - } - else - { - printf("Stopping watch on %#lx \n", window); - } - gdkwin = gdk_window_lookup (window); - if (is_start) - { - gdk_window_add_filter (gdkwin, client_event_filter, NULL); - } - else - { - gdk_window_remove_filter (gdkwin, client_event_filter, NULL); - } -} - diff --git a/src/xsettings-client.c b/src/xsettings-client.c deleted file mode 100644 index b98535bc8..000000000 --- a/src/xsettings-client.c +++ /dev/null @@ -1,536 +0,0 @@ -/* - * Copyright © 2001 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Red Hat not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. Red Hat makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Owen Taylor, Red Hat, Inc. - */ -#include <limits.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <X11/Xlib.h> -#include <X11/Xmd.h> /* For CARD16 */ - -#include "xsettings-client.h" - -struct _XSettingsClient -{ - Display *display; - int screen; - XSettingsNotifyFunc notify; - XSettingsWatchFunc watch; - void *cb_data; - - Window manager_window; - Atom manager_atom; - Atom selection_atom; - Atom xsettings_atom; - - XSettingsList *settings; -}; - -static void -notify_changes (XSettingsClient *client, - XSettingsList *old_list) -{ - XSettingsList *old_iter = old_list; - XSettingsList *new_iter = client->settings; - - if (!client->notify) - return; - - while (old_iter || new_iter) - { - int cmp; - - if (old_iter && new_iter) - cmp = strcmp (old_iter->setting->name, new_iter->setting->name); - else if (old_iter) - cmp = -1; - else - cmp = 1; - - if (cmp < 0) - { - client->notify (old_iter->setting->name, - XSETTINGS_ACTION_DELETED, - NULL, - client->cb_data); - } - else if (cmp == 0) - { - if (!xsettings_setting_equal (old_iter->setting, - new_iter->setting)) - client->notify (old_iter->setting->name, - XSETTINGS_ACTION_CHANGED, - new_iter->setting, - client->cb_data); - } - else - { - client->notify (new_iter->setting->name, - XSETTINGS_ACTION_NEW, - new_iter->setting, - client->cb_data); - } - - if (old_iter) - old_iter = old_iter->next; - if (new_iter) - new_iter = new_iter->next; - } -} - -static int -ignore_errors (Display *display, XErrorEvent *event) -{ - return True; -} - -static char local_byte_order = '\0'; - -#define BYTES_LEFT(buffer) ((buffer)->data + (buffer)->len - (buffer)->pos) - -static XSettingsResult -fetch_card16 (XSettingsBuffer *buffer, - CARD16 *result) -{ - CARD16 x; - - if (BYTES_LEFT (buffer) < 2) - return XSETTINGS_ACCESS; - - x = *(CARD16 *)buffer->pos; - buffer->pos += 2; - - if (buffer->byte_order == local_byte_order) - *result = x; - else - *result = (x << 8) | (x >> 8); - - return XSETTINGS_SUCCESS; -} - -static XSettingsResult -fetch_ushort (XSettingsBuffer *buffer, - unsigned short *result) -{ - CARD16 x; - XSettingsResult r; - - r = fetch_card16 (buffer, &x); - if (r == XSETTINGS_SUCCESS) - *result = x; - - return r; -} - -static XSettingsResult -fetch_card32 (XSettingsBuffer *buffer, - CARD32 *result) -{ - CARD32 x; - - if (BYTES_LEFT (buffer) < 4) - return XSETTINGS_ACCESS; - - x = *(CARD32 *)buffer->pos; - buffer->pos += 4; - - if (buffer->byte_order == local_byte_order) - *result = x; - else - *result = (x << 24) | ((x & 0xff00) << 8) | ((x & 0xff0000) >> 8) | (x >> 24); - - return XSETTINGS_SUCCESS; -} - -static XSettingsResult -fetch_card8 (XSettingsBuffer *buffer, - CARD8 *result) -{ - if (BYTES_LEFT (buffer) < 1) - return XSETTINGS_ACCESS; - - *result = *(CARD8 *)buffer->pos; - buffer->pos += 1; - - return XSETTINGS_SUCCESS; -} - -#define XSETTINGS_PAD(n,m) ((n + m - 1) & (~(m-1))) - -static XSettingsList * -parse_settings (unsigned char *data, - size_t len) -{ - XSettingsBuffer buffer; - XSettingsResult result = XSETTINGS_SUCCESS; - XSettingsList *settings = NULL; - CARD32 serial; - CARD32 n_entries; - CARD32 i; - XSettingsSetting *setting = NULL; - - local_byte_order = xsettings_byte_order (); - - buffer.pos = buffer.data = data; - buffer.len = len; - - result = fetch_card8 (&buffer, &buffer.byte_order); - if (buffer.byte_order != MSBFirst && - buffer.byte_order != LSBFirst) - { - fprintf (stderr, "Invalid byte order in XSETTINGS property\n"); - result = XSETTINGS_FAILED; - goto out; - } - - buffer.pos += 3; - - result = fetch_card32 (&buffer, &serial); - if (result != XSETTINGS_SUCCESS) - goto out; - - result = fetch_card32 (&buffer, &n_entries); - if (result != XSETTINGS_SUCCESS) - goto out; - - for (i = 0; i < n_entries; i++) - { - CARD8 type; - CARD16 name_len; - CARD32 v_int; - size_t pad_len; - - result = fetch_card8 (&buffer, &type); - if (result != XSETTINGS_SUCCESS) - goto out; - - buffer.pos += 1; - - result = fetch_card16 (&buffer, &name_len); - if (result != XSETTINGS_SUCCESS) - goto out; - - pad_len = XSETTINGS_PAD(name_len, 4); - if (BYTES_LEFT (&buffer) < pad_len) - { - result = XSETTINGS_ACCESS; - goto out; - } - - setting = malloc (sizeof *setting); - if (!setting) - { - result = XSETTINGS_NO_MEM; - goto out; - } - setting->type = XSETTINGS_TYPE_INT; /* No allocated memory */ - - setting->name = malloc (name_len + 1); - if (!setting->name) - { - result = XSETTINGS_NO_MEM; - goto out; - } - - memcpy (setting->name, buffer.pos, name_len); - setting->name[name_len] = '\0'; - buffer.pos += pad_len; - - result = fetch_card32 (&buffer, &v_int); - if (result != XSETTINGS_SUCCESS) - goto out; - setting->last_change_serial = v_int; - - switch (type) - { - case XSETTINGS_TYPE_INT: - result = fetch_card32 (&buffer, &v_int); - if (result != XSETTINGS_SUCCESS) - goto out; - - setting->data.v_int = (INT32)v_int; - break; - case XSETTINGS_TYPE_STRING: - result = fetch_card32 (&buffer, &v_int); - if (result != XSETTINGS_SUCCESS) - goto out; - - pad_len = XSETTINGS_PAD (v_int, 4); - if (v_int + 1 == 0 || /* Guard against wrap-around */ - BYTES_LEFT (&buffer) < pad_len) - { - result = XSETTINGS_ACCESS; - goto out; - } - - setting->data.v_string = malloc (v_int + 1); - if (!setting->data.v_string) - { - result = XSETTINGS_NO_MEM; - goto out; - } - - memcpy (setting->data.v_string, buffer.pos, v_int); - setting->data.v_string[v_int] = '\0'; - buffer.pos += pad_len; - - break; - case XSETTINGS_TYPE_COLOR: - result = fetch_ushort (&buffer, &setting->data.v_color.red); - if (result != XSETTINGS_SUCCESS) - goto out; - result = fetch_ushort (&buffer, &setting->data.v_color.green); - if (result != XSETTINGS_SUCCESS) - goto out; - result = fetch_ushort (&buffer, &setting->data.v_color.blue); - if (result != XSETTINGS_SUCCESS) - goto out; - result = fetch_ushort (&buffer, &setting->data.v_color.alpha); - if (result != XSETTINGS_SUCCESS) - goto out; - - break; - default: - /* Quietly ignore unknown types */ - break; - } - - setting->type = type; - - result = xsettings_list_insert (&settings, setting); - if (result != XSETTINGS_SUCCESS) - goto out; - - setting = NULL; - } - - out: - - if (result != XSETTINGS_SUCCESS) - { - switch (result) - { - case XSETTINGS_NO_MEM: - fprintf(stderr, "Out of memory reading XSETTINGS property\n"); - break; - case XSETTINGS_ACCESS: - fprintf(stderr, "Invalid XSETTINGS property (read off end)\n"); - break; - case XSETTINGS_DUPLICATE_ENTRY: - fprintf (stderr, "Duplicate XSETTINGS entry for '%s'\n", setting->name); - case XSETTINGS_FAILED: - case XSETTINGS_SUCCESS: - case XSETTINGS_NO_ENTRY: - break; - } - - if (setting) - xsettings_setting_free (setting); - - xsettings_list_free (settings); - settings = NULL; - - } - - return settings; -} - -static void -read_settings (XSettingsClient *client) -{ - Atom type; - int format; - unsigned long n_items; - unsigned long bytes_after; - unsigned char *data; - int result; - - int (*old_handler) (Display *, XErrorEvent *); - - XSettingsList *old_list = client->settings; - - client->settings = NULL; - - old_handler = XSetErrorHandler (ignore_errors); - result = XGetWindowProperty (client->display, client->manager_window, - client->xsettings_atom, 0, LONG_MAX, - False, client->xsettings_atom, - &type, &format, &n_items, &bytes_after, &data); - XSetErrorHandler (old_handler); - - if (result == Success && type == client->xsettings_atom) - { - if (format != 8) - { - fprintf (stderr, "Invalid format for XSETTINGS property %d", format); - } - else - client->settings = parse_settings (data, n_items); - - XFree (data); - } - - notify_changes (client, old_list); - xsettings_list_free (old_list); -} - -static void -add_events (Display *display, - Window window, - long mask) -{ - XWindowAttributes attr; - - XGetWindowAttributes (display, window, &attr); - XSelectInput (display, window, attr.your_event_mask | mask); -} - -static void -check_manager_window (XSettingsClient *client) -{ - if (client->manager_window && client->watch) - client->watch (client->manager_window, False, 0, client->cb_data); - - XGrabServer (client->display); - - client->manager_window = XGetSelectionOwner (client->display, - client->selection_atom); - if (client->manager_window) - XSelectInput (client->display, client->manager_window, - PropertyChangeMask | StructureNotifyMask); - - XUngrabServer (client->display); - XFlush (client->display); - - if (client->manager_window && client->watch) - client->watch (client->manager_window, True, - PropertyChangeMask | StructureNotifyMask, - client->cb_data); - - read_settings (client); -} - -XSettingsClient * -xsettings_client_new (Display *display, - int screen, - XSettingsNotifyFunc notify, - XSettingsWatchFunc watch, - void *cb_data) -{ - XSettingsClient *client; - char buffer[256]; - - client = malloc (sizeof *client); - if (!client) - return NULL; - - client->display = display; - client->screen = screen; - client->notify = notify; - client->watch = watch; - client->cb_data = cb_data; - - client->manager_window = None; - client->settings = NULL; - - sprintf(buffer, "_XSETTINGS_S%d", screen); - client->selection_atom = XInternAtom (display, buffer, False); - client->xsettings_atom = XInternAtom (display, "_XSETTINGS_SETTINGS", False); - client->manager_atom = XInternAtom (display, "MANAGER", False); - - /* Select on StructureNotify so we get MANAGER events - */ - add_events (display, RootWindow (display, screen), StructureNotifyMask); - - if (client->watch) - client->watch (RootWindow (display, screen), True, StructureNotifyMask, - client->cb_data); - - check_manager_window (client); - - return client; -} - -void -xsettings_client_destroy (XSettingsClient *client) -{ - if (client->watch) - client->watch (RootWindow (client->display, client->screen), - False, 0, client->cb_data); - if (client->manager_window && client->watch) - client->watch (client->manager_window, False, 0, client->cb_data); - - xsettings_list_free (client->settings); - free (client); -} - -XSettingsResult -xsettings_client_get_setting (XSettingsClient *client, - const char *name, - XSettingsSetting **setting) -{ - XSettingsSetting *search = xsettings_list_lookup (client->settings, name); - if (search) - { - *setting = xsettings_setting_copy (search); - return *setting ? XSETTINGS_SUCCESS : XSETTINGS_NO_MEM; - } - else - return XSETTINGS_NO_ENTRY; -} - -Bool -xsettings_client_process_event (XSettingsClient *client, - XEvent *xev) -{ - /* The checks here will not unlikely cause us to reread - * the properties from the manager window a number of - * times when the manager changes from A->B. But manager changes - * are going to be pretty rare. - */ - if (xev->xany.window == RootWindow (client->display, client->screen)) - { - if (xev->xany.type == ClientMessage && - xev->xclient.message_type == client->manager_atom && - xev->xclient.data.l[1] == client->selection_atom) - { - check_manager_window (client); - return True; - } - } - else if (xev->xany.window == client->manager_window) - { - if (xev->xany.type == DestroyNotify) - { - check_manager_window (client); - return True; - } - else if (xev->xany.type == PropertyNotify) - { - read_settings (client); - return True; - } - } - - return False; -} diff --git a/src/xsettings-client.h b/src/xsettings-client.h deleted file mode 100644 index 1b13fe3bb..000000000 --- a/src/xsettings-client.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright © 2001 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Red Hat not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. Red Hat makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Owen Taylor, Red Hat, Inc. - */ -#ifndef XSETTINGS_CLIENT_H -#define XSETTINGS_CLIENT_H - -#include <X11/Xlib.h> -#include "xsettings-common.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -typedef struct _XSettingsClient XSettingsClient; - -typedef enum -{ - XSETTINGS_ACTION_NEW, - XSETTINGS_ACTION_CHANGED, - XSETTINGS_ACTION_DELETED -} XSettingsAction; - -typedef void (*XSettingsNotifyFunc) (const char *name, - XSettingsAction action, - XSettingsSetting *setting, - void *cb_data); -typedef void (*XSettingsWatchFunc) (Window window, - Bool is_start, - long mask, - void *cb_data); - -XSettingsClient *xsettings_client_new (Display *display, - int screen, - XSettingsNotifyFunc notify, - XSettingsWatchFunc watch, - void *cb_data); -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); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* XSETTINGS_CLIENT_H */ diff --git a/src/xsettings-common.c b/src/xsettings-common.c deleted file mode 100644 index 3d7444046..000000000 --- a/src/xsettings-common.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright © 2001 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Red Hat not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. Red Hat makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Owen Taylor, Red Hat, Inc. - */ -#include "string.h" -#include "stdlib.h" - -#include <X11/Xlib.h> -#include <X11/Xmd.h> /* For CARD32 */ - -#include "xsettings-common.h" - -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; - } - - result->last_change_serial = setting->last_change_serial; - - return result; - - err: - if (result->name) - free (result->name); - free (result); - - return NULL; -} - -XSettingsList * -xsettings_list_copy (XSettingsList *list) -{ - XSettingsList *new = NULL; - XSettingsList *old_iter = list; - XSettingsList *new_iter = NULL; - - while (old_iter) - { - XSettingsList *new_node; - - new_node = malloc (sizeof *new_node); - if (!new_node) - goto error; - - new_node->setting = xsettings_setting_copy (old_iter->setting); - if (!new_node->setting) - { - free (new_node); - goto error; - } - - if (new_iter) - new_iter->next = new_node; - else - new = new_node; - - new_iter = new_node; - - old_iter = old_iter->next; - } - - return new; - - error: - xsettings_list_free (new); - return NULL; -} - -int -xsettings_setting_equal (XSettingsSetting *setting_a, - XSettingsSetting *setting_b) -{ - if (setting_a->type != setting_b->type) - return 0; - - if (strcmp (setting_a->name, setting_b->name) != 0) - return 0; - - switch (setting_a->type) - { - case XSETTINGS_TYPE_INT: - return setting_a->data.v_int == setting_b->data.v_int; - case XSETTINGS_TYPE_COLOR: - return (setting_a->data.v_color.red == setting_b->data.v_color.red && - setting_a->data.v_color.green == setting_b->data.v_color.green && - setting_a->data.v_color.blue == setting_b->data.v_color.blue && - setting_a->data.v_color.alpha == setting_b->data.v_color.alpha); - case XSETTINGS_TYPE_STRING: - return strcmp (setting_a->data.v_string, setting_b->data.v_string) == 0; - } - - return 0; -} - -void -xsettings_setting_free (XSettingsSetting *setting) -{ - if (setting->type == XSETTINGS_TYPE_STRING) - free (setting->data.v_string); - - if (setting->name) - free (setting->name); - - free (setting); -} - -void -xsettings_list_free (XSettingsList *list) -{ - while (list) - { - XSettingsList *next = list->next; - - xsettings_setting_free (list->setting); - free (list); - - list = next; - } -} - -XSettingsResult -xsettings_list_insert (XSettingsList **list, - XSettingsSetting *setting) -{ - XSettingsList *node; - XSettingsList *iter; - XSettingsList *last = NULL; - - node = malloc (sizeof *node); - if (!node) - return XSETTINGS_NO_MEM; - node->setting = setting; - - iter = *list; - while (iter) - { - int cmp = strcmp (setting->name, iter->setting->name); - - if (cmp < 0) - break; - else if (cmp == 0) - { - free (node); - return XSETTINGS_DUPLICATE_ENTRY; - } - - last = iter; - iter = iter->next; - } - - if (last) - last->next = node; - else - *list = node; - - node->next = iter; - - return XSETTINGS_SUCCESS; -} - -XSettingsResult -xsettings_list_delete (XSettingsList **list, - const char *name) -{ - XSettingsList *iter; - XSettingsList *last = NULL; - - iter = *list; - while (iter) - { - if (strcmp (name, iter->setting->name) == 0) - { - if (last) - last->next = iter->next; - else - *list = iter->next; - - xsettings_setting_free (iter->setting); - free (iter); - - return XSETTINGS_SUCCESS; - } - - last = iter; - iter = iter->next; - } - - return XSETTINGS_FAILED; -} - -XSettingsSetting * -xsettings_list_lookup (XSettingsList *list, - const char *name) -{ - XSettingsList *iter; - - iter = list; - while (iter) - { - if (strcmp (name, iter->setting->name) == 0) - return iter->setting; - - iter = iter->next; - } - - return NULL; -} - -char -xsettings_byte_order (void) -{ - CARD32 myint = 0x01020304; - return (*(char *)&myint == 1) ? MSBFirst : LSBFirst; -} diff --git a/src/xsettings-common.h b/src/xsettings-common.h deleted file mode 100644 index 1e93f84d4..000000000 --- a/src/xsettings-common.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright © 2001 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Red Hat not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. Red Hat makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Owen Taylor, Red Hat, Inc. - */ -#ifndef XSETTINGS_COMMON_H -#define XSETTINGS_COMMON_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Renames for GDK inclusion */ - -#define xsettings_byte_order _gdk_xsettings_byte_order -#define xsettings_client_destroy _gdk_xsettings_client_destroy -#define xsettings_client_get_setting _gdk_xsettings_client_get_setting -#define xsettings_client_new _gdk_xsettings_client_new -#define xsettings_client_process_event _gdk_xsettings_client_process_event -#define xsettings_list_copy _gdk_xsettings_list_copy -#define xsettings_list_delete _gdk_xsettings_list_delete -#define xsettings_list_free _gdk_xsettings_list_free -#define xsettings_list_insert _gdk_xsettings_list_insert -#define xsettings_list_lookup _gdk_xsettings_list_lookup -#define xsettings_setting_copy _gdk_xsettings_setting_copy -#define xsettings_setting_equal _gdk_xsettings_setting_equal -#define xsettings_setting_free _gdk_xsettings_setting_free - - -typedef struct _XSettingsBuffer XSettingsBuffer; -typedef struct _XSettingsColor XSettingsColor; -typedef struct _XSettingsList XSettingsList; -typedef struct _XSettingsSetting XSettingsSetting; - -/* Types of settings possible. Enum values correspond to - * protocol values. - */ -typedef enum -{ - XSETTINGS_TYPE_INT = 0, - XSETTINGS_TYPE_STRING = 1, - XSETTINGS_TYPE_COLOR = 2 -} XSettingsType; - -typedef enum -{ - XSETTINGS_SUCCESS, - XSETTINGS_NO_MEM, - XSETTINGS_ACCESS, - XSETTINGS_FAILED, - XSETTINGS_NO_ENTRY, - XSETTINGS_DUPLICATE_ENTRY -} XSettingsResult; - -struct _XSettingsBuffer -{ - char byte_order; - size_t len; - unsigned char *data; - unsigned char *pos; -}; - -struct _XSettingsColor -{ - unsigned short red, green, blue, alpha; -}; - -struct _XSettingsList -{ - XSettingsSetting *setting; - XSettingsList *next; -}; - -struct _XSettingsSetting -{ - char *name; - XSettingsType type; - - union { - int v_int; - char *v_string; - XSettingsColor v_color; - } data; - - unsigned long last_change_serial; -}; - -XSettingsSetting *xsettings_setting_copy (XSettingsSetting *setting); -void xsettings_setting_free (XSettingsSetting *setting); -int xsettings_setting_equal (XSettingsSetting *setting_a, - XSettingsSetting *setting_b); - -void xsettings_list_free (XSettingsList *list); -XSettingsList *xsettings_list_copy (XSettingsList *list); -XSettingsResult xsettings_list_insert (XSettingsList **list, - XSettingsSetting *setting); -XSettingsSetting *xsettings_list_lookup (XSettingsList *list, - const char *name); -XSettingsResult xsettings_list_delete (XSettingsList **list, - const char *name); - -char xsettings_byte_order (void); - -#define XSETTINGS_PAD(n,m) ((n + m - 1) & (~(m-1))) - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* XSETTINGS_COMMON_H */ -- GitLab