summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorStefano Karapetsas <[email protected]>2012-12-07 06:06:41 -0800
committerStefano Karapetsas <[email protected]>2012-12-07 06:06:41 -0800
commit12dcf19aa5f51901053c273cd7f5c17ce85e909d (patch)
tree5b71387df7bf817dd5d0dff60ecc09d8291dba0d /plugins
parenta279b02b4d563d2300ccb588e5969c7dfac8108e (diff)
parent6e61d207a2088479f5bb12ce4edb1d2886c40b53 (diff)
downloadmate-settings-daemon-12dcf19aa5f51901053c273cd7f5c17ce85e909d.tar.bz2
mate-settings-daemon-12dcf19aa5f51901053c273cd7f5c17ce85e909d.tar.xz
Merge pull request #29 from jasmineaura/develop
Fix #23, and some cleanups
Diffstat (limited to 'plugins')
-rw-r--r--plugins/Makefile.am1
-rw-r--r--plugins/a11y-keyboard/msd-a11y-keyboard-plugin.c5
-rw-r--r--plugins/background/msd-background-plugin.c121
-rw-r--r--plugins/clipboard/msd-clipboard-plugin.c6
-rw-r--r--plugins/dummy/msd-dummy-plugin.c5
-rw-r--r--plugins/font/Makefile.am51
-rw-r--r--plugins/font/delayed-dialog.c122
-rw-r--r--plugins/font/delayed-dialog.h36
-rw-r--r--plugins/font/font.mate-settings-plugin.in8
-rw-r--r--plugins/font/msd-font-manager.c438
-rw-r--r--plugins/font/msd-font-manager.h61
-rw-r--r--plugins/font/msd-font-plugin.c104
-rw-r--r--plugins/font/msd-font-plugin.h63
-rw-r--r--plugins/housekeeping/msd-disk-space.c1
-rw-r--r--plugins/housekeeping/msd-housekeeping-plugin.c6
-rw-r--r--plugins/housekeeping/msd-ldsm-trash-empty.c1
-rw-r--r--plugins/keyboard/Makefile.am5
-rw-r--r--plugins/keyboard/modmap-dialog.ui257
-rw-r--r--plugins/keyboard/msd-keyboard-manager.c2
-rw-r--r--plugins/keyboard/msd-keyboard-plugin.c6
-rw-r--r--plugins/keyboard/msd-keyboard-xkb.c88
-rw-r--r--plugins/keyboard/msd-xmodmap.c406
-rw-r--r--plugins/keyboard/msd-xmodmap.h29
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-channel-map.c67
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-channel-map.h16
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-mixer-card.c27
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-mixer-card.h1
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-mixer-control.c33
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-mixer-event-role.c8
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-mixer-sink-input.c14
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-mixer-sink.c14
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-mixer-source-output.c2
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-mixer-source.c14
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-mixer-stream.c43
-rw-r--r--plugins/media-keys/cut-n-paste/gvc-mixer-stream.h7
-rw-r--r--plugins/media-keys/msd-media-keys-plugin.c6
-rw-r--r--plugins/mouse/msd-mouse-plugin.c6
-rw-r--r--plugins/smartcard/msd-smartcard-manager.c2
-rw-r--r--plugins/smartcard/msd-smartcard-plugin.c6
-rw-r--r--plugins/sound/msd-sound-plugin.c6
-rw-r--r--plugins/typing-break/msd-typing-break-plugin.c5
-rw-r--r--plugins/xrandr/msd-xrandr-plugin.c6
-rw-r--r--plugins/xrdb/msd-xrdb-plugin.c6
-rw-r--r--plugins/xsettings/msd-xsettings-manager.c10
-rw-r--r--plugins/xsettings/msd-xsettings-plugin.c5
45 files changed, 282 insertions, 1844 deletions
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index f1f227c..4741ba6 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -6,7 +6,6 @@ enabled_plugins = \
clipboard \
datetime \
dummy \
- font \
housekeeping \
keyboard \
media-keys \
diff --git a/plugins/a11y-keyboard/msd-a11y-keyboard-plugin.c b/plugins/a11y-keyboard/msd-a11y-keyboard-plugin.c
index d905336..57ac653 100644
--- a/plugins/a11y-keyboard/msd-a11y-keyboard-plugin.c
+++ b/plugins/a11y-keyboard/msd-a11y-keyboard-plugin.c
@@ -102,3 +102,8 @@ msd_a11y_keyboard_plugin_class_init (MsdA11yKeyboardPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdA11yKeyboardPluginPrivate));
}
+
+static void
+msd_a11y_keyboard_plugin_class_finalize (MsdA11yKeyboardPluginClass *klass)
+{
+}
diff --git a/plugins/background/msd-background-plugin.c b/plugins/background/msd-background-plugin.c
index f5cb0d1..ee6b49c 100644
--- a/plugins/background/msd-background-plugin.c
+++ b/plugins/background/msd-background-plugin.c
@@ -27,85 +27,88 @@
#include "msd-background-plugin.h"
#include "msd-background-manager.h"
-//class MsdBackgroundPlugin
-//{
- struct MsdBackgroundPluginPrivate {
- MsdBackgroundManager* manager;
- };
+struct MsdBackgroundPluginPrivate {
+ MsdBackgroundManager* manager;
+};
- #define MSD_BACKGROUND_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE((object), MSD_TYPE_BACKGROUND_PLUGIN, MsdBackgroundPluginPrivate))
+#define MSD_BACKGROUND_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE((object), MSD_TYPE_BACKGROUND_PLUGIN, MsdBackgroundPluginPrivate))
- MATE_SETTINGS_PLUGIN_REGISTER(MsdBackgroundPlugin, msd_background_plugin)
+MATE_SETTINGS_PLUGIN_REGISTER(MsdBackgroundPlugin, msd_background_plugin)
- static void
- msd_background_plugin_init (MsdBackgroundPlugin* plugin)
- {
- plugin->priv = MSD_BACKGROUND_PLUGIN_GET_PRIVATE(plugin);
-
- g_debug("MsdBackgroundPlugin initializing");
+static void
+msd_background_plugin_init (MsdBackgroundPlugin* plugin)
+{
+ plugin->priv = MSD_BACKGROUND_PLUGIN_GET_PRIVATE(plugin);
- plugin->priv->manager = msd_background_manager_new();
- }
+ g_debug("MsdBackgroundPlugin initializing");
- static void
- msd_background_plugin_finalize (GObject* object)
- {
- MsdBackgroundPlugin* plugin;
+ plugin->priv->manager = msd_background_manager_new();
+}
- g_return_if_fail(object != NULL);
- g_return_if_fail(MSD_IS_BACKGROUND_PLUGIN(object));
+static void
+msd_background_plugin_finalize (GObject* object)
+{
+ MsdBackgroundPlugin* plugin;
- g_debug("MsdBackgroundPlugin finalizing");
+ g_return_if_fail(object != NULL);
+ g_return_if_fail(MSD_IS_BACKGROUND_PLUGIN(object));
- plugin = MSD_BACKGROUND_PLUGIN(object);
+ g_debug("MsdBackgroundPlugin finalizing");
- g_return_if_fail(plugin->priv != NULL);
+ plugin = MSD_BACKGROUND_PLUGIN(object);
- if (plugin->priv->manager != NULL)
- {
- g_object_unref (plugin->priv->manager);
- }
+ g_return_if_fail(plugin->priv != NULL);
- G_OBJECT_CLASS(msd_background_plugin_parent_class)->finalize(object);
+ if (plugin->priv->manager != NULL)
+ {
+ g_object_unref (plugin->priv->manager);
}
- static void
- impl_activate (MateSettingsPlugin* plugin)
- {
- gboolean res;
- GError* error;
+ G_OBJECT_CLASS(msd_background_plugin_parent_class)->finalize(object);
+}
- g_debug("Activating background plugin");
+static void
+impl_activate (MateSettingsPlugin* plugin)
+{
+ gboolean res;
+ GError* error;
- error = NULL;
- res = msd_background_manager_start(MSD_BACKGROUND_PLUGIN(plugin)->priv->manager, &error);
+ g_debug("Activating background plugin");
- if (!res)
- {
- g_warning("Unable to start background manager: %s", error->message);
- g_error_free(error);
- }
- }
+ error = NULL;
+ res = msd_background_manager_start(MSD_BACKGROUND_PLUGIN(plugin)->priv->manager, &error);
- static void
- impl_deactivate (MateSettingsPlugin* plugin)
+ if (!res)
{
- g_debug("Deactivating background plugin");
-
- msd_background_manager_stop(MSD_BACKGROUND_PLUGIN(plugin)->priv->manager);
+ g_warning("Unable to start background manager: %s", error->message);
+ g_error_free(error);
}
+}
- static void
- msd_background_plugin_class_init (MsdBackgroundPluginClass* klass)
- {
- GObjectClass* object_class = G_OBJECT_CLASS(klass);
- MateSettingsPluginClass* plugin_class = MATE_SETTINGS_PLUGIN_CLASS(klass);
+static void
+impl_deactivate (MateSettingsPlugin* plugin)
+{
+ g_debug("Deactivating background plugin");
- object_class->finalize = msd_background_plugin_finalize;
+ msd_background_manager_stop(MSD_BACKGROUND_PLUGIN(plugin)->priv->manager);
+}
- plugin_class->activate = impl_activate;
- plugin_class->deactivate = impl_deactivate;
+static void
+msd_background_plugin_class_init (MsdBackgroundPluginClass* klass)
+{
+ GObjectClass* object_class = G_OBJECT_CLASS(klass);
+ MateSettingsPluginClass* plugin_class = MATE_SETTINGS_PLUGIN_CLASS(klass);
+
+ object_class->finalize = msd_background_plugin_finalize;
+
+ plugin_class->activate = impl_activate;
+ plugin_class->deactivate = impl_deactivate;
+
+ g_type_class_add_private(klass, sizeof(MsdBackgroundPluginPrivate));
+}
+
+static void
+msd_background_plugin_class_finalize (MsdBackgroundPluginClass *klass)
+{
+}
- g_type_class_add_private(klass, sizeof(MsdBackgroundPluginPrivate));
- }
-//} \ No newline at end of file
diff --git a/plugins/clipboard/msd-clipboard-plugin.c b/plugins/clipboard/msd-clipboard-plugin.c
index a7e4d86..da00eda 100644
--- a/plugins/clipboard/msd-clipboard-plugin.c
+++ b/plugins/clipboard/msd-clipboard-plugin.c
@@ -102,3 +102,9 @@ msd_clipboard_plugin_class_init (MsdClipboardPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdClipboardPluginPrivate));
}
+
+static void
+msd_clipboard_plugin_class_finalize (MsdClipboardPluginClass *klass)
+{
+}
+
diff --git a/plugins/dummy/msd-dummy-plugin.c b/plugins/dummy/msd-dummy-plugin.c
index 5fbbc0b..ff4046d 100644
--- a/plugins/dummy/msd-dummy-plugin.c
+++ b/plugins/dummy/msd-dummy-plugin.c
@@ -102,3 +102,8 @@ msd_dummy_plugin_class_init (MsdDummyPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdDummyPluginPrivate));
}
+
+static void
+msd_dummy_plugin_class_finalize (MsdDummyPluginClass *klass)
+{
+}
diff --git a/plugins/font/Makefile.am b/plugins/font/Makefile.am
deleted file mode 100644
index d0cf9ce..0000000
--- a/plugins/font/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-NULL =
-
-plugin_LTLIBRARIES = \
- libfont.la \
- $(NULL)
-
-libfont_la_SOURCES = \
- msd-font-plugin.h \
- msd-font-plugin.c \
- msd-font-manager.h \
- msd-font-manager.c \
- delayed-dialog.h \
- delayed-dialog.c \
- $(NULL)
-
-libfont_la_CPPFLAGS = \
- -I$(top_srcdir)/mate-settings-daemon \
- -DMATE_SETTINGS_LOCALEDIR=\""$(datadir)/locale"\" \
- $(AM_CPPFLAGS)
-
-libfont_la_CFLAGS = \
- $(SETTINGS_PLUGIN_CFLAGS) \
- $(AM_CFLAGS)
-
-libfont_la_LDFLAGS = \
- $(MSD_PLUGIN_LDFLAGS) \
- $(NULL)
-
-libfont_la_LIBADD = \
- $(SETTINGS_PLUGIN_LIBS) \
- $(NULL)
-
-plugin_in_files = \
- font.mate-settings-plugin.in \
- $(NULL)
-
-plugin_DATA = $(plugin_in_files:.mate-settings-plugin.in=.mate-settings-plugin)
-
-EXTRA_DIST = \
- $(plugin_in_files) \
- $(NULL)
-
-CLEANFILES = \
- $(plugin_DATA) \
- $(NULL)
-
-DISTCLEANFILES = \
- $(plugin_DATA) \
- $(NULL)
-
-@MSD_INTLTOOL_PLUGIN_RULE@
diff --git a/plugins/font/delayed-dialog.c b/plugins/font/delayed-dialog.c
deleted file mode 100644
index afec416..0000000
--- a/plugins/font/delayed-dialog.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright © 2006 Novell, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <gtk/gtk.h>
-#include <gdk/gdkx.h>
-
-#include "delayed-dialog.h"
-
-static gboolean delayed_show_timeout (gpointer data);
-static GdkFilterReturn message_filter (GdkXEvent *xevent,
- GdkEvent *event,
- gpointer data);
-
-static GSList *dialogs = NULL;
-
-/**
- * mate_settings_delayed_show_dialog:
- * @dialog: the dialog
- *
- * Shows the dialog as with gtk_widget_show(), unless a window manager
- * hasn't been started yet, in which case it will wait up to 5 seconds
- * for that to happen before showing the dialog.
- **/
-void
-mate_settings_delayed_show_dialog (GtkWidget *dialog)
-{
- GdkDisplay *display = gtk_widget_get_display (dialog);
- Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
- GdkScreen *screen = gtk_widget_get_screen (dialog);
- GdkAtom manager_atom;
- char selection_name[10];
- Atom selection_atom;
-
- /* We can't use gdk_selection_owner_get() for this, because
- * it's an unknown out-of-process window.
- */
- snprintf (selection_name, sizeof (selection_name), "WM_S%d",
- gdk_screen_get_number (screen));
- selection_atom = XInternAtom (xdisplay, selection_name, True);
- if (selection_atom &&
- XGetSelectionOwner (xdisplay, selection_atom) != None) {
- gtk_widget_show (dialog);
- return;
- }
-
- dialogs = g_slist_prepend (dialogs, dialog);
-
- manager_atom = gdk_atom_intern ("MANAGER", FALSE);
- gdk_display_add_client_message_filter (display, manager_atom,
- message_filter, NULL);
-
- g_timeout_add (5000, delayed_show_timeout, NULL);
-}
-
-static gboolean
-delayed_show_timeout (gpointer data)
-{
- GSList *l;
-
- for (l = dialogs; l; l = l->next)
- gtk_widget_show (l->data);
- g_slist_free (dialogs);
- dialogs = NULL;
-
- /* FIXME: There's no gdk_display_remove_client_message_filter */
-
- return FALSE;
-}
-
-static GdkFilterReturn
-message_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data)
-{
- XClientMessageEvent *evt = (XClientMessageEvent *)xevent;
- char *selection_name = XGetAtomName (evt->display, evt->data.l[1]);
- int screen;
- GSList *l, *next;
-
- if (!dialogs)
- return GDK_FILTER_CONTINUE;
-
- if (strncmp (selection_name, "WM_S", 4) != 0) {
- XFree (selection_name);
- return GDK_FILTER_CONTINUE;
- }
-
- screen = atoi (selection_name + 4);
-
- for (l = dialogs; l; l = next) {
- GtkWidget *dialog = l->data;
- next = l->next;
-
- if (gdk_screen_get_number (gtk_widget_get_screen (dialog)) == screen) {
- gtk_widget_show (dialog);
- dialogs = g_slist_remove (dialogs, dialog);
- }
- }
-
- if (!dialogs) {
- /* FIXME: There's no gdk_display_remove_client_message_filter */
- }
-
- return GDK_FILTER_CONTINUE;
-}
diff --git a/plugins/font/delayed-dialog.h b/plugins/font/delayed-dialog.h
deleted file mode 100644
index 2bc2313..0000000
--- a/plugins/font/delayed-dialog.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright © 2006 Novell, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-
-#ifndef __DELAYED_DIALOG_H
-#define __DELAYED_DIALOG_H
-
-#include <gtk/gtk.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void mate_settings_delayed_show_dialog (GtkWidget *dialog);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/plugins/font/font.mate-settings-plugin.in b/plugins/font/font.mate-settings-plugin.in
deleted file mode 100644
index 6bb1c47..0000000
--- a/plugins/font/font.mate-settings-plugin.in
+++ /dev/null
@@ -1,8 +0,0 @@
-[MATE Settings Plugin]
-Module=font
-IAge=0
-_Name=Font
-_Description=Font plugin
-Authors=Rodrigo Moya
-Copyright=Copyright © 2007 The MATE Foundation
-Website=
diff --git a/plugins/font/msd-font-manager.c b/plugins/font/msd-font-manager.c
deleted file mode 100644
index 46206b4..0000000
--- a/plugins/font/msd-font-manager.c
+++ /dev/null
@@ -1,438 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2007 The MATE Foundation
- * Copyright (C) 2007 William Jon McCann <[email protected]>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "config.h"
-
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <dirent.h>
-
-#include <locale.h>
-
-#include <X11/Xatom.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gdk/gdk.h>
-#include <gdk/gdkx.h>
-#include <gtk/gtk.h>
-#include <gio/gio.h>
-
-#include "mate-settings-profile.h"
-#include "msd-font-manager.h"
-#include "delayed-dialog.h"
-
-static void msd_font_manager_class_init (MsdFontManagerClass *klass);
-static void msd_font_manager_init (MsdFontManager *font_manager);
-
-G_DEFINE_TYPE (MsdFontManager, msd_font_manager, G_TYPE_OBJECT)
-
-static gpointer manager_object = NULL;
-
-static void
-update_property (GString *props, const gchar* key, const gchar* value)
-{
- gchar* needle;
- size_t needle_len;
- gchar* found = NULL;
-
- /* update an existing property */
- needle = g_strconcat (key, ":", NULL);
- needle_len = strlen (needle);
- if (g_str_has_prefix (props->str, needle))
- found = props->str;
- else
- found = strstr (props->str, needle);
-
- if (found) {
- size_t value_index;
- gchar* end;
-
- end = strchr (found, '\n');
- value_index = (found - props->str) + needle_len + 1;
- g_string_erase (props, value_index, end ? (end - found - needle_len) : -1);
- g_string_insert (props, value_index, "\n");
- g_string_insert (props, value_index, value);
- } else {
- g_string_append_printf (props, "%s:\t%s\n", key, value);
- }
-}
-
-static void
-load_xcursor_theme (GSettings *settings)
-{
- char *cursor_theme;
- int size;
- GString *add_string;
- Display *dpy;
- gchar numbuf[20];
-
- mate_settings_profile_start (NULL);
-
- size = g_settings_get_int (settings, "cursor-size");
- if (size <= 0) {
- return;
- }
-
- cursor_theme = g_settings_get_string (settings, "cursor-theme");
- if (cursor_theme == NULL) {
- return;
- }
-
- /* get existing properties */
- dpy = XOpenDisplay (NULL);
- g_return_if_fail (dpy != NULL);
- add_string = g_string_new (XResourceManagerString (dpy));
- g_debug("load_xcursor_theme: existing res '%s'", add_string->str);
-
- update_property (add_string, "Xcursor.theme", cursor_theme);
- update_property (add_string, "Xcursor.theme_core", "true");
- g_snprintf (numbuf, sizeof (numbuf), "%i", size);
- update_property (add_string, "Xcursor.size", numbuf);
-
- g_debug("load_xcursor_theme: new res '%s'", add_string->str);
-
- /* Set the new X property */
- XChangeProperty(dpy, RootWindow (dpy, 0),
- XA_RESOURCE_MANAGER, XA_STRING, 8, PropModeReplace, add_string->str, add_string->len);
- XCloseDisplay (dpy);
-
- g_free (cursor_theme);
- g_string_free (add_string, TRUE);
-
- mate_settings_profile_end (NULL);
-}
-
-static char* setup_dir(const char* font_dir_name, gboolean create)
-{
- #if GLIB_CHECK_VERSION(2, 6, 0)
- char* font_dir = g_build_path(G_DIR_SEPARATOR_S, g_get_user_config_dir(), "mate", "share", font_dir_name, NULL);
- #else // glib version < 2.6.0
- char* font_dir = g_build_path(G_DIR_SEPARATOR_S, g_get_home_dir(), ".config", "mate", "share", font_dir_name, NULL);
- #endif
-
- if (create)
- {
- if (g_mkdir_with_parents(font_dir, 0755) != 0)
- {
- g_warning("Cannot create needed directory \"%s\".", font_dir);
- g_free(font_dir);
- font_dir = NULL;
- }
- }
- else if (!g_file_test(font_dir, G_FILE_TEST_EXISTS))
- {
- g_free (font_dir);
- font_dir = NULL;
- }
-
- return font_dir;
-}
-
-static char *
-empty_check_dir (char *font_dir)
-{
- char *file_name;
-
- if (!font_dir)
- return NULL;
-
- /* remove the fonts.dir and fonts.scale files that mkfontdir generates. */
-
- file_name = g_build_filename (G_DIR_SEPARATOR_S, font_dir, "fonts.dir", NULL);
- unlink (file_name);
- g_free (file_name);
-
- file_name = g_build_filename (G_DIR_SEPARATOR_S, font_dir, "fonts.scale", NULL);
- unlink (file_name);
- g_free (file_name);
-
- /* if it's empty, get rid of it. */
- if (0 == rmdir (font_dir)) {
- g_free (font_dir);
- font_dir = NULL;
- }
-
- return font_dir;
-}
-
-static char*
-setup_font_dir (GSettings *settings)
-{
- return empty_check_dir (setup_dir ("fonts", FALSE));
-}
-
-static char*
-setup_cursor_dir (GSettings *settings)
-{
- char *cursor_dir;
- char *cursor_font;
- DIR *dir;
- struct dirent *file_dirent;
-
- cursor_font = g_settings_get_string (settings, "cursor-font");
- if (cursor_font != NULL) {
- if (!g_path_is_absolute (cursor_font) ||
- !g_file_test (cursor_font, G_FILE_TEST_IS_REGULAR)) {
- /* font file is not usable */
- g_free (cursor_font);
- cursor_font = NULL;
- }
- }
-
- cursor_dir = setup_dir ("cursor-fonts", cursor_font != NULL);
-
- /* remove previously made symlinks, if any */
- if (cursor_dir) {
- dir = opendir (cursor_dir);
- while ((file_dirent = readdir (dir)) != NULL) {
- struct stat st;
- char *link_name;
-
- link_name = g_build_filename (cursor_dir, file_dirent->d_name, NULL);
- if (lstat (link_name, &st)) {
- g_free (link_name);
- continue;
- }
- g_free (link_name);
-
- if (S_ISLNK (st.st_mode))
- unlink (link_name);
- }
- closedir (dir);
- }
-
- if (cursor_font && cursor_dir) {
- char *newpath;
- char *font_name;
-
- font_name = strrchr (cursor_font, G_DIR_SEPARATOR);
- newpath = g_build_filename (cursor_dir, font_name, NULL);
- symlink (cursor_font, newpath);
- g_free (newpath);
- g_free (cursor_font);
- cursor_font = NULL;
- } else {
- cursor_dir = empty_check_dir (cursor_dir);
- }
-
- return cursor_dir;
-}
-
-static void
-load_font_paths (GSettings *settings)
-{
- char *font_dir_name;
- char *cursor_dir_name;
-
- char **font_path;
- char **new_font_path;
- int n_fonts;
- int new_n_fonts;
-
- int i;
-
- const char *argv[4];
- int argc = 0;
-
- mate_settings_profile_start (NULL);
-
- font_dir_name = setup_font_dir (settings);
- cursor_dir_name = setup_cursor_dir (settings);
-
- if (font_dir_name == NULL && cursor_dir_name == NULL)
- goto done;
-
- /* run mkfontdir */
- argv[argc++] = "mkfontdir";
- if (font_dir_name)
- argv[argc++] = font_dir_name;
- if (cursor_dir_name)
- argv[argc++] = cursor_dir_name;
- argv[argc] = NULL;
- g_spawn_sync (NULL, /* current dir */
- (char **) (void *) argv, NULL /* envp */,
- G_SPAWN_SEARCH_PATH,
- NULL, NULL, /* child_setup */
- NULL, NULL, NULL, NULL);
-
- /* Set the font path */
- font_path = XGetFontPath (gdk_x11_get_default_xdisplay (), &n_fonts);
- new_n_fonts = n_fonts;
- if (cursor_dir_name && (n_fonts == 0 || strcmp (font_path[0], cursor_dir_name)))
- new_n_fonts++;
- if (font_dir_name && (n_fonts == 0 || strcmp (font_path[n_fonts-1], font_dir_name)))
- new_n_fonts++;
-
- if (new_n_fonts == n_fonts)
- new_font_path = font_path;
- else {
- new_font_path = g_new0 (char *, new_n_fonts);
-
- if (cursor_dir_name && (n_fonts == 0 || strcmp (font_path[0], cursor_dir_name))) {
- new_font_path[0] = cursor_dir_name;
- for (i = 0; i < n_fonts; i++)
- new_font_path [i+1] = font_path [i];
- } else {
- for (i = 0; i < n_fonts; i++)
- new_font_path [i] = font_path [i];
- }
-
- if (font_dir_name && (n_fonts == 0 || strcmp (font_path[n_fonts-1], font_dir_name))) {
- new_font_path[new_n_fonts-1] = font_dir_name;
- }
- }
-
- /* We set font path even if it was not changed, to enforce dropping
- * caches in the server */
- gdk_error_trap_push ();
- XSetFontPath (gdk_display, new_font_path, new_n_fonts);
- gdk_flush ();
-
- /* if there was an error setting the new path, revert */
- if (gdk_error_trap_pop ()) {
- XSetFontPath (gdk_display, font_path, n_fonts);
- }
-
- g_free (font_dir_name);
- g_free (cursor_dir_name);
-
- if (new_font_path != font_path)
- g_free (new_font_path);
-
- XFreeFontPath (font_path);
-
-done:
- mate_settings_profile_end (NULL);
-}
-
-gboolean
-msd_font_manager_start (MsdFontManager *manager,
- GError **error)
-{
- GSettings *settings;
-
- g_debug ("Starting font manager");
- mate_settings_profile_start (NULL);
-
- settings = g_settings_new ("org.mate.peripherals-mouse");
-
- load_xcursor_theme (settings);
- load_font_paths (settings);
-
- g_object_unref (settings);
-
- mate_settings_profile_end (NULL);
-
- return TRUE;
-}
-
-void
-msd_font_manager_stop (MsdFontManager *manager)
-{
- g_debug ("Stopping font manager");
-}
-
-static void
-msd_font_manager_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- MsdFontManager *self;
-
- self = MSD_FONT_MANAGER (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-msd_font_manager_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- MsdFontManager *self;
-
- self = MSD_FONT_MANAGER (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GObject *
-msd_font_manager_constructor (GType type,
- guint n_construct_properties,
- GObjectConstructParam *construct_properties)
-{
- MsdFontManager *font_manager;
- MsdFontManagerClass *klass;
-
- klass = MSD_FONT_MANAGER_CLASS (g_type_class_peek (MSD_TYPE_FONT_MANAGER));
-
- font_manager = MSD_FONT_MANAGER (G_OBJECT_CLASS (msd_font_manager_parent_class)->constructor (type,
- n_construct_properties,
- construct_properties));
-
- return G_OBJECT (font_manager);
-}
-
-static void
-msd_font_manager_class_init (MsdFontManagerClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->get_property = msd_font_manager_get_property;
- object_class->set_property = msd_font_manager_set_property;
- object_class->constructor = msd_font_manager_constructor;
-}
-
-static void
-msd_font_manager_init (MsdFontManager *manager)
-{
-}
-
-MsdFontManager *
-msd_font_manager_new (void)
-{
- if (manager_object != NULL) {
- g_object_ref (manager_object);
- } else {
- manager_object = g_object_new (MSD_TYPE_FONT_MANAGER, NULL);
- g_object_add_weak_pointer (manager_object,
- (gpointer *) &manager_object);
- }
-
- return MSD_FONT_MANAGER (manager_object);
-}
diff --git a/plugins/font/msd-font-manager.h b/plugins/font/msd-font-manager.h
deleted file mode 100644
index 6a87baf..0000000
--- a/plugins/font/msd-font-manager.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2007 William Jon McCann <[email protected]>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef __MSD_FONT_MANAGER_H
-#define __MSD_FONT_MANAGER_H
-
-#include <glib-object.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MSD_TYPE_FONT_MANAGER (msd_font_manager_get_type ())
-#define MSD_FONT_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MSD_TYPE_FONT_MANAGER, MsdFontManager))
-#define MSD_FONT_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), MSD_TYPE_FONT_MANAGER, MsdFontManagerClass))
-#define MSD_IS_FONT_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MSD_TYPE_FONT_MANAGER))
-#define MSD_IS_FONT_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MSD_TYPE_FONT_MANAGER))
-#define MSD_FONT_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MSD_TYPE_FONT_MANAGER, MsdFontManagerClass))
-
-typedef struct MsdFontManagerPrivate MsdFontManagerPrivate;
-
-typedef struct
-{
- GObject parent;
- MsdFontManagerPrivate *priv;
-} MsdFontManager;
-
-typedef struct
-{
- GObjectClass parent_class;
-} MsdFontManagerClass;
-
-GType msd_font_manager_get_type (void);
-
-MsdFontManager * msd_font_manager_new (void);
-gboolean msd_font_manager_start (MsdFontManager *manager,
- GError **error);
-void msd_font_manager_stop (MsdFontManager *manager);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __MSD_FONT_MANAGER_H */
diff --git a/plugins/font/msd-font-plugin.c b/plugins/font/msd-font-plugin.c
deleted file mode 100644
index b6a4452..0000000
--- a/plugins/font/msd-font-plugin.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2007 William Jon McCann <[email protected]>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "config.h"
-
-#include <glib/gi18n-lib.h>
-#include <gmodule.h>
-
-#include "mate-settings-plugin.h"
-#include "msd-font-plugin.h"
-#include "msd-font-manager.h"
-
-struct MsdFontPluginPrivate {
- MsdFontManager *manager;
-};
-
-#define MSD_FONT_PLUGIN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), MSD_TYPE_FONT_PLUGIN, MsdFontPluginPrivate))
-
-MATE_SETTINGS_PLUGIN_REGISTER (MsdFontPlugin, msd_font_plugin)
-
-static void
-msd_font_plugin_init (MsdFontPlugin *plugin)
-{
- plugin->priv = MSD_FONT_PLUGIN_GET_PRIVATE (plugin);
-
- g_debug ("MsdFontPlugin initializing");
-
- plugin->priv->manager = msd_font_manager_new ();
-}
-
-static void
-msd_font_plugin_finalize (GObject *object)
-{
- MsdFontPlugin *plugin;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (MSD_IS_FONT_PLUGIN (object));
-
- g_debug ("MsdFontPlugin finalizing");
-
- plugin = MSD_FONT_PLUGIN (object);
-
- g_return_if_fail (plugin->priv != NULL);
-
- if (plugin->priv->manager != NULL) {
- g_object_unref (plugin->priv->manager);
- }
-
- G_OBJECT_CLASS (msd_font_plugin_parent_class)->finalize (object);
-}
-
-static void
-impl_activate (MateSettingsPlugin *plugin)
-{
- gboolean res;
- GError *error;
-
- g_debug ("Activating font plugin");
-
- error = NULL;
- res = msd_font_manager_start (MSD_FONT_PLUGIN (plugin)->priv->manager, &error);
- if (! res) {
- g_warning ("Unable to start font manager: %s", error->message);
- g_error_free (error);
- }
-}
-
-static void
-impl_deactivate (MateSettingsPlugin *plugin)
-{
- g_debug ("Deactivating font plugin");
- msd_font_manager_stop (MSD_FONT_PLUGIN (plugin)->priv->manager);
-}
-
-static void
-msd_font_plugin_class_init (MsdFontPluginClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- MateSettingsPluginClass *plugin_class = MATE_SETTINGS_PLUGIN_CLASS (klass);
-
- object_class->finalize = msd_font_plugin_finalize;
-
- plugin_class->activate = impl_activate;
- plugin_class->deactivate = impl_deactivate;
-
- g_type_class_add_private (klass, sizeof (MsdFontPluginPrivate));
-}
diff --git a/plugins/font/msd-font-plugin.h b/plugins/font/msd-font-plugin.h
deleted file mode 100644
index ea6e775..0000000
--- a/plugins/font/msd-font-plugin.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2007 William Jon McCann <[email protected]>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef __MSD_FONT_PLUGIN_H__
-#define __MSD_FONT_PLUGIN_H__
-
-#include <glib.h>
-#include <glib-object.h>
-#include <gmodule.h>
-
-#include "mate-settings-plugin.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MSD_TYPE_FONT_PLUGIN (msd_font_plugin_get_type ())
-#define MSD_FONT_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MSD_TYPE_FONT_PLUGIN, MsdFontPlugin))
-#define MSD_FONT_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), MSD_TYPE_FONT_PLUGIN, MsdFontPluginClass))
-#define MSD_IS_FONT_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MSD_TYPE_FONT_PLUGIN))
-#define MSD_IS_FONT_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), MSD_TYPE_FONT_PLUGIN))
-#define MSD_FONT_PLUGIN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MSD_TYPE_FONT_PLUGIN, MsdFontPluginClass))
-
-typedef struct MsdFontPluginPrivate MsdFontPluginPrivate;
-
-typedef struct
-{
- MateSettingsPlugin parent;
- MsdFontPluginPrivate *priv;
-} MsdFontPlugin;
-
-typedef struct
-{
- MateSettingsPluginClass parent_class;
-} MsdFontPluginClass;
-
-GType msd_font_plugin_get_type (void) G_GNUC_CONST;
-
-/* All the plugins must implement this function */
-G_MODULE_EXPORT GType register_mate_settings_plugin (GTypeModule *module);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __MSD_FONT_PLUGIN_H__ */
diff --git a/plugins/housekeeping/msd-disk-space.c b/plugins/housekeeping/msd-disk-space.c
index f419658..3065b39 100644
--- a/plugins/housekeeping/msd-disk-space.c
+++ b/plugins/housekeeping/msd-disk-space.c
@@ -35,7 +35,6 @@
#include <gio/gunixmounts.h>
#include <gio/gio.h>
#include <gtk/gtk.h>
-#include <gio/gio.h>
#include "msd-disk-space.h"
#include "msd-ldsm-dialog.h"
diff --git a/plugins/housekeeping/msd-housekeeping-plugin.c b/plugins/housekeeping/msd-housekeeping-plugin.c
index 9d5c407..40cd547 100644
--- a/plugins/housekeeping/msd-housekeeping-plugin.c
+++ b/plugins/housekeeping/msd-housekeeping-plugin.c
@@ -102,3 +102,9 @@ msd_housekeeping_plugin_class_init (MsdHousekeepingPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdHousekeepingPluginPrivate));
}
+
+static void
+msd_housekeeping_plugin_class_finalize (MsdHousekeepingPluginClass *klass)
+{
+}
+
diff --git a/plugins/housekeeping/msd-ldsm-trash-empty.c b/plugins/housekeeping/msd-ldsm-trash-empty.c
index e218d6d..af01aa1 100644
--- a/plugins/housekeeping/msd-ldsm-trash-empty.c
+++ b/plugins/housekeeping/msd-ldsm-trash-empty.c
@@ -18,7 +18,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <gio/gio.h>
#include <glib/gi18n.h>
#include <gio/gio.h>
diff --git a/plugins/keyboard/Makefile.am b/plugins/keyboard/Makefile.am
index 327ad7e..1d2c93e 100644
--- a/plugins/keyboard/Makefile.am
+++ b/plugins/keyboard/Makefile.am
@@ -13,9 +13,6 @@ icons_DATA = \
kbd-capslock-off.png kbd-numlock-off.png kbd-scrolllock-off.png \
kbd-capslock-on.png kbd-numlock-on.png kbd-scrolllock-on.png
-uidir = $(pkgdatadir)
-ui_DATA = modmap-dialog.ui
-
libkeyboard_la_SOURCES = \
msd-keyboard-plugin.h \
msd-keyboard-plugin.c \
@@ -23,8 +20,6 @@ libkeyboard_la_SOURCES = \
msd-keyboard-manager.c \
msd-keyboard-xkb.h \
msd-keyboard-xkb.c \
- msd-xmodmap.h \
- msd-xmodmap.c \
delayed-dialog.h \
delayed-dialog.c \
$(NULL)
diff --git a/plugins/keyboard/modmap-dialog.ui b/plugins/keyboard/modmap-dialog.ui
deleted file mode 100644
index 73d5a57..0000000
--- a/plugins/keyboard/modmap-dialog.ui
+++ /dev/null
@@ -1,257 +0,0 @@
-<?xml version="1.0"?>
-<interface>
- <!-- interface-requires gtk+ 2.6 -->
- <!-- interface-naming-policy toplevel-contextual -->
- <object class="GtkDialog" id="dialog1">
- <property name="visible">True</property>
- <property name="title" translatable="yes">Load modmap files</property>
- <property name="type_hint">dialog</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox4">
- <property name="visible">True</property>
- <child>
- <object class="GtkVBox" id="vbox44">
- <property name="visible">True</property>
- <child>
- <object class="GtkLabel" id="label62">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Would you like to load the modmap files?</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox32">
- <property name="visible">True</property>
- <property name="border_width">12</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkVBox" id="vbox45">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkLabel" id="label63">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">_Loaded files:</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow7">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkTreeView" id="treeview1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="headers_visible">False</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox46">
- <property name="visible">True</property>
- <property name="border_width">6</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkLabel" id="label64">
- <property name="visible">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button7">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <child>
- <object class="GtkAlignment" id="alignment1">
- <property name="visible">True</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
- <child>
- <object class="GtkHBox" id="hbox33">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <object class="GtkImage" id="image1">
- <property name="visible">True</property>
- <property name="stock">gtk-add</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label66">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Load</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button6">
- <property name="label">gtk-remove</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox47">
- <property name="visible">True</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkLabel" id="label65">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">A_vailable files:</property>
- <property name="use_underline">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow8">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
- <property name="shadow_type">in</property>
- <child>
- <object class="GtkTreeView" id="treeview2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="headers_visible">False</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area3">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="helpbutton2">
- <property name="label">gtk-help</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="okbutton1">
- <property name="label">gtk-ok</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="-11">helpbutton2</action-widget>
- <action-widget response="-5">okbutton1</action-widget>
- </action-widgets>
- </object>
-</interface>
diff --git a/plugins/keyboard/msd-keyboard-manager.c b/plugins/keyboard/msd-keyboard-manager.c
index 293fb18..a4b97e5 100644
--- a/plugins/keyboard/msd-keyboard-manager.c
+++ b/plugins/keyboard/msd-keyboard-manager.c
@@ -50,7 +50,6 @@
#include "msd-keyboard-manager.h"
#include "msd-keyboard-xkb.h"
-#include "msd-xmodmap.h"
#define MSD_KEYBOARD_MANAGER_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o), MSD_TYPE_KEYBOARD_MANAGER, MsdKeyboardManagerPrivate))
@@ -333,7 +332,6 @@ start_keyboard_idle_cb (MsdKeyboardManager *manager)
manager->priv->settings = g_settings_new (MSD_KEYBOARD_SCHEMA);
/* Essential - xkb initialization should happen before */
- msd_keyboard_xkb_set_post_activation_callback ((PostActivationCallback) msd_load_modmap_files, NULL);
msd_keyboard_xkb_init (manager);
#ifdef HAVE_X11_EXTENSIONS_XKB_H
diff --git a/plugins/keyboard/msd-keyboard-plugin.c b/plugins/keyboard/msd-keyboard-plugin.c
index 310c74c..97ad9ef 100644
--- a/plugins/keyboard/msd-keyboard-plugin.c
+++ b/plugins/keyboard/msd-keyboard-plugin.c
@@ -102,3 +102,9 @@ msd_keyboard_plugin_class_init (MsdKeyboardPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdKeyboardPluginPrivate));
}
+
+static void
+msd_keyboard_plugin_class_finalize (MsdKeyboardPluginClass *klass)
+{
+}
+
diff --git a/plugins/keyboard/msd-keyboard-xkb.c b/plugins/keyboard/msd-keyboard-xkb.c
index 29cc066..d922210 100644
--- a/plugins/keyboard/msd-keyboard-xkb.c
+++ b/plugins/keyboard/msd-keyboard-xkb.c
@@ -37,7 +37,6 @@
#include <libmatekbd/matekbd-keyboard-config.h>
#include <libmatekbd/matekbd-util.h>
-#include "msd-xmodmap.h"
#include "msd-keyboard-xkb.h"
#include "delayed-dialog.h"
#include "mate-settings-profile.h"
@@ -501,88 +500,6 @@ msd_keyboard_xkb_analyze_sysconfig (void)
NULL);
}
-static gboolean
-msd_chk_file_list (void)
-{
- GDir *home_dir;
- const char *fname;
- GSList *file_list = NULL;
- GSList *last_login_file_list = NULL;
- GSList *tmp = NULL;
- GSList *tmp_l = NULL;
- gboolean new_file_exist = FALSE;
-
- home_dir = g_dir_open (g_get_home_dir (), 0, NULL);
- while ((fname = g_dir_read_name (home_dir)) != NULL) {
- if (g_strrstr (fname, "modmap")) {
- file_list =
- g_slist_append (file_list, g_strdup (fname));
- }
- }
- g_dir_close (home_dir);
-
- gchar **settings_list;
- settings_list = g_settings_get_strv (settings_desktop, KNOWN_FILES_KEY);
- if (settings_list != NULL) {
- gint i;
- for (i = 0; i < G_N_ELEMENTS (settings_list); i++) {
- if (settings_list[i] != NULL)
- last_login_file_list =
- g_slist_append (last_login_file_list, g_strdup (settings_list[i]));
- }
- g_strfreev (settings_list);
- }
-
- /* Compare between the two file list, currently available modmap files
- and the files available in the last log in */
- tmp = file_list;
- while (tmp != NULL) {
- tmp_l = last_login_file_list;
- new_file_exist = TRUE;
- while (tmp_l != NULL) {
- if (strcmp (tmp->data, tmp_l->data) == 0) {
- new_file_exist = FALSE;
- break;
- } else {
- tmp_l = tmp_l->next;
- }
- }
- if (new_file_exist) {
- break;
- } else {
- tmp = tmp->next;
- }
- }
-
- if (new_file_exist) {
- GSList *l;
- GPtrArray *array = g_ptr_array_new ();
- for (l = file_list; l != NULL; l = l->next)
- g_ptr_array_add (array, l->data);
- g_ptr_array_add (array, NULL);
- g_settings_set_strv (settings_desktop, KNOWN_FILES_KEY, (const gchar **) array->pdata);
- g_ptr_array_free (array, FALSE);
- }
-
- g_slist_foreach (file_list, (GFunc) g_free, NULL);
- g_slist_free (file_list);
-
- g_slist_foreach (last_login_file_list, (GFunc) g_free, NULL);
- g_slist_free (last_login_file_list);
-
- return new_file_exist;
-
-}
-
-static void
-msd_keyboard_xkb_chk_lcl_xmm (void)
-{
- if (msd_chk_file_list ()) {
- msd_modmap_dialog_call ();
- }
- msd_load_modmap_files ();
-}
-
void
msd_keyboard_xkb_set_post_activation_callback (PostActivationCallback fun,
void *user_data)
@@ -695,11 +612,6 @@ msd_keyboard_xkb_init (MsdKeyboardManager * kbd_manager)
xkl_engine);
xkl_engine_backup_names_prop (xkl_engine);
msd_keyboard_xkb_analyze_sysconfig ();
- mate_settings_profile_start
- ("msd_keyboard_xkb_chk_lcl_xmm");
- msd_keyboard_xkb_chk_lcl_xmm ();
- mate_settings_profile_end
- ("msd_keyboard_xkb_chk_lcl_xmm");
g_signal_connect (settings_desktop, "changed", G_CALLBACK(apply_desktop_settings_cb), NULL);
g_signal_connect (settings_kbd, "changed", G_CALLBACK(apply_xkb_settings_cb), NULL);
diff --git a/plugins/keyboard/msd-xmodmap.c b/plugins/keyboard/msd-xmodmap.c
deleted file mode 100644
index 5bea2da..0000000
--- a/plugins/keyboard/msd-xmodmap.c
+++ /dev/null
@@ -1,406 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
- *
- * Copyright © 2005 Novell Inc.
- *
- * Written by Shakti Sen <[email protected]>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <string.h>
-
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <gio/gio.h>
-
-#include "msd-xmodmap.h"
-
-#define KEYBOARD_SCHEMA "org.mate.peripherals-keyboard-xkb.general"
-#define LOADED_FILES_KEY "update-handlers"
-
-void
-msd_load_modmap_files (void)
-{
- GSettings *settings;
- GSList *tmp = NULL;
- GSList *loaded_file_list = NULL;
- gchar **settings_list;
- gint i;
-
- settings = g_settings_new (KEYBOARD_SCHEMA);
- settings_list = g_settings_get_strv (settings, LOADED_FILES_KEY);
-
- if (settings_list != NULL) {
- for (i = 0; settings_list[i] != NULL; i++) {
- loaded_file_list =
- g_slist_append (loaded_file_list, g_strdup (settings_list[i]));
- }
- for (tmp = loaded_file_list; tmp != NULL; tmp = tmp->next) {
- gchar *file;
- gchar *command;
-
- file = g_build_filename (g_get_home_dir (), (gchar *) tmp->data, NULL);
- command = g_strconcat ("xmodmap ", file, NULL);
- g_free (file);
-
- g_spawn_command_line_async (command, NULL);
-
- g_free (command);
- g_free (tmp->data);
- }
- g_strfreev (settings_list);
- g_slist_free (loaded_file_list);
- }
- g_object_unref (settings);
-}
-
-static void
-response_callback (GtkWidget *dialog,
- int id,
- void *data)
-{
- if (id == GTK_RESPONSE_OK) {
- msd_load_modmap_files ();
- }
- gtk_widget_destroy (dialog);
-}
-
-static void
-get_selected_files_func (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data)
-{
- GSList **list = data;
- gchar *filename;
-
- filename = NULL;
- gtk_tree_model_get (model,
- iter,
- 0,
- &filename,
- -1);
-
- *list = g_slist_prepend (*list, filename);
-}
-
-static GSList*
-remove_string_from_list (GSList *list,
- const char *str)
-{
- GSList *tmp;
-
- for (tmp = list; tmp != NULL; tmp = tmp->next) {
- if (strcmp (tmp->data, str) == 0) {
- g_free (tmp->data);
- list = g_slist_delete_link (list, tmp);
- break;
- }
- }
-
- return list;
-}
-
-
-static void
-remove_button_clicked_callback (GtkWidget *button,
- void *data)
-{
- GtkWidget *dialog;
- GtkListStore *tree = NULL;
- GtkTreeSelection *selection;
- GtkWidget *treeview;
- GSettings *settings;
- GSList *filenames = NULL;
- GSList *tmp = NULL;
- GSList *loaded_files = NULL;
-
- dialog = data;
-
- treeview = g_object_get_data (G_OBJECT (dialog), "treeview1");
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
- gtk_tree_selection_selected_foreach (selection,
- get_selected_files_func,
- &filenames);
-
- if (!filenames)
- return;
-
- /* Remove the selected file */
-
- settings = g_settings_new (KEYBOARD_SCHEMA);
-
- gchar **settings_list;
- settings_list = g_settings_get_strv (settings, LOADED_FILES_KEY);
- if (settings_list != NULL) {
- gint i;
- for (i = 0; i < G_N_ELEMENTS (settings_list); i++) {
- if (settings_list[i] != NULL)
- loaded_files =
- g_slist_append (loaded_files, g_strdup (settings_list[i]));
- }
- g_strfreev (settings_list);
- }
-
- loaded_files = remove_string_from_list (loaded_files, (char *)filenames->data);
-
- GSList *l;
- GPtrArray *array = g_ptr_array_new ();
- for (l = loaded_files; l != NULL; l = l->next)
- g_ptr_array_add (array, l->data);
- g_ptr_array_add (array, NULL);
- g_settings_set_strv (settings, LOADED_FILES_KEY, (const gchar **) array->pdata);
- g_ptr_array_free (array, FALSE);
-
- g_object_unref (settings);
-
- tree = g_object_get_data (G_OBJECT (dialog), "tree");
-
- gtk_list_store_clear (tree);
- for (tmp = loaded_files; tmp != NULL; tmp = tmp->next) {
- GtkTreeIter iter;
- gtk_list_store_append (tree, &iter);
- gtk_list_store_set (tree, &iter,
- 0,
- tmp->data,
- -1);
- }
-
- g_slist_foreach (loaded_files, (GFunc) g_free, NULL);
- g_slist_free (loaded_files);
-}
-
-static void
-load_button_clicked_callback (GtkWidget *button,
- void *data)
-{
- GtkWidget *dialog;
- GtkListStore *tree = NULL;
- GtkTreeSelection *selection;
- GtkWidget *treeview;
- GSList *filenames = NULL;
- GSList *tmp = NULL;
- GSList *loaded_files = NULL;
- GSettings *settings;
-
- dialog = data;
-
- treeview = g_object_get_data (G_OBJECT (dialog),
- "loaded-treeview");
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
- gtk_tree_selection_selected_foreach (selection,
- get_selected_files_func,
- &filenames);
-
- if (!filenames)
- return;
-
- /* Add the files to left-tree-view */
- settings = g_settings_new (KEYBOARD_SCHEMA);
-
- gchar **settings_list;
- settings_list = g_settings_get_strv (settings, LOADED_FILES_KEY);
- if (settings_list != NULL) {
- gint i;
- for (i = 0; i < G_N_ELEMENTS (settings_list); i++) {
- if (settings_list[i] != NULL)
- loaded_files =
- g_slist_append (loaded_files, g_strdup (settings_list[i]));
- }
- g_strfreev (settings_list);
- }
-
- if (g_slist_find_custom (loaded_files, filenames->data, (GCompareFunc) strcmp)) {
- g_free (filenames->data);
- g_slist_free (filenames);
- goto out;
- }
-
- loaded_files = g_slist_append (loaded_files, filenames->data);
-
- GSList *l;
- GPtrArray *array = g_ptr_array_new ();
- for (l = loaded_files; l != NULL; l = l->next)
- g_ptr_array_add (array, l->data);
- g_ptr_array_add (array, NULL);
- g_settings_set_strv (settings, LOADED_FILES_KEY, (const gchar **) array->pdata);
- g_ptr_array_free (array, FALSE);
-
- tree = g_object_get_data (G_OBJECT (dialog), "tree");
-
- gtk_list_store_clear (tree);
- for (tmp = loaded_files; tmp != NULL; tmp = tmp->next) {
- GtkTreeIter iter;
- gtk_list_store_append (tree, &iter);
- gtk_list_store_set (tree, &iter,
- 0,
- tmp->data,
- -1);
- }
-
-out:
- g_object_unref (settings);
- g_slist_foreach (loaded_files, (GFunc) g_free, NULL);
- g_slist_free (loaded_files);
-}
-
-void
-msd_modmap_dialog_call (void)
-{
- GtkBuilder *builder;
- guint res;
- GError *error;
- GtkWidget *load_dialog;
- GtkListStore *tree;
- GtkCellRenderer *cell_renderer;
- GtkTreeIter parent_iter;
- GtkTreeIter iter;
- GtkTreeModel *sort_model;
- GtkTreeSelection *selection;
- GtkWidget *treeview;
- GtkWidget *treeview1;
- GtkTreeViewColumn *column;
- GtkWidget *add_button;
- GtkWidget *remove_button;
- GSList *tmp;
- GDir *homeDir;
- GSList *loaded_files;
- const char *fname;
- GSettings *settings;
-
- homeDir = g_dir_open (g_get_home_dir (), 0, NULL);
- if (homeDir == NULL)
- return;
-
- error = NULL;
- builder = gtk_builder_new ();
- res = gtk_builder_add_from_file (builder,
- DATADIR "/modmap-dialog.ui",
- &error);
-
- if (res == 0) {
- g_warning ("Could not load UI file: %s", error->message);
- g_error_free (error);
- g_object_unref (builder);
- g_dir_close (homeDir);
- return;
- }
-
- load_dialog = GTK_WIDGET (gtk_builder_get_object (builder, "dialog1"));
- gtk_window_set_modal (GTK_WINDOW (load_dialog), TRUE);
- g_signal_connect (load_dialog,
- "response",
- G_CALLBACK (response_callback),
- builder);
- add_button = GTK_WIDGET (gtk_builder_get_object (builder, "button7"));
- g_signal_connect (add_button,
- "clicked",
- G_CALLBACK (load_button_clicked_callback),
- load_dialog);
- remove_button = GTK_WIDGET (gtk_builder_get_object (builder,
- "button6"));
- g_signal_connect (remove_button,
- "clicked",
- G_CALLBACK (remove_button_clicked_callback),
- load_dialog);
- treeview = GTK_WIDGET (gtk_builder_get_object (builder, "treeview1"));
- g_object_set_data (G_OBJECT (load_dialog), "treeview1", treeview);
- treeview = GTK_WIDGET (gtk_builder_get_object (builder, "treeview2"));
- g_object_set_data (G_OBJECT (load_dialog), "loaded-treeview", treeview);
- tree = gtk_list_store_new (1, G_TYPE_STRING);
- cell_renderer = gtk_cell_renderer_text_new ();
- column = gtk_tree_view_column_new_with_attributes ("modmap",
- cell_renderer,
- "text", 0,
- NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
- gtk_tree_view_column_set_sort_column_id (column, 0);
-
- /* Add the data */
- while ((fname = g_dir_read_name (homeDir)) != NULL) {
- if (g_strrstr (fname, "modmap")) {
- gtk_list_store_append (tree, &parent_iter);
- gtk_list_store_set (tree, &parent_iter,
- 0,
- fname,
- -1);
- }
- }
- sort_model = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (tree));
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
- 0,
- GTK_SORT_ASCENDING);
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), sort_model);
- g_object_unref (G_OBJECT (tree));
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
- gtk_tree_selection_set_mode (GTK_TREE_SELECTION (selection),
- GTK_SELECTION_MULTIPLE);
- gtk_widget_show (load_dialog);
-
- g_dir_close (homeDir);
-
- /* Left treeview */
- treeview1 = GTK_WIDGET (gtk_builder_get_object (builder, "treeview1"));
- tree = gtk_list_store_new (1, G_TYPE_STRING);
- cell_renderer = gtk_cell_renderer_text_new ();
- column = gtk_tree_view_column_new_with_attributes ("modmap",
- cell_renderer,
- "text", 0,
- NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview1), column);
- gtk_tree_view_column_set_sort_column_id (column, 0);
-
- settings = g_settings_new (KEYBOARD_SCHEMA);
-
- gchar **settings_list;
- settings_list = g_settings_get_strv (settings, LOADED_FILES_KEY);
- if (settings_list != NULL) {
- gint i;
- for (i = 0; i < G_N_ELEMENTS (settings_list); i++) {
- if (settings_list[i] != NULL)
- loaded_files =
- g_slist_append (loaded_files, g_strdup (settings_list[i]));
- }
- g_strfreev (settings_list);
- }
-
- /* Add the data */
- for (tmp = loaded_files; tmp != NULL; tmp = tmp->next) {
- gtk_list_store_append (tree, &iter);
- gtk_list_store_set (tree, &iter,
- 0,
- tmp->data,
- -1);
- }
-
- g_slist_foreach (loaded_files, (GFunc) g_free, NULL);
- g_slist_free (loaded_files);
-
- sort_model = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (tree));
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
- 0,
- GTK_SORT_ASCENDING);
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeview1), sort_model);
- g_object_unref (G_OBJECT (tree));
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview1));
- gtk_tree_selection_set_mode (GTK_TREE_SELECTION (selection),
- GTK_SELECTION_MULTIPLE);
- g_object_set_data (G_OBJECT (load_dialog), "tree", tree);
- g_object_unref (builder);
-}
diff --git a/plugins/keyboard/msd-xmodmap.h b/plugins/keyboard/msd-xmodmap.h
deleted file mode 100644
index 4316edb..0000000
--- a/plugins/keyboard/msd-xmodmap.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* mate-settings-xmodmap.h
- *
- * Copyright © 2005 Novell Inc.
- *
- * Written by Shakti Sen <[email protected]>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-#ifndef XMODMAP_H
-#define XMODMAP_H
-
-void msd_load_modmap_files (void);
-void msd_modmap_dialog_call (void);
-
-#endif
diff --git a/plugins/media-keys/cut-n-paste/gvc-channel-map.c b/plugins/media-keys/cut-n-paste/gvc-channel-map.c
index 6748d57..e35e793 100644
--- a/plugins/media-keys/cut-n-paste/gvc-channel-map.c
+++ b/plugins/media-keys/cut-n-paste/gvc-channel-map.c
@@ -25,7 +25,7 @@
#include <unistd.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <pulse/pulseaudio.h>
@@ -33,14 +33,6 @@
#define GVC_CHANNEL_MAP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_CHANNEL_MAP, GvcChannelMapPrivate))
-#ifndef PA_CHECK_VERSION
-#define PA_CHECK_VERSION(major,minor,micro) \
- ((PA_MAJOR > (major)) || \
- (PA_MAJOR == (major) && PA_MINOR > (minor)) || \
- (PA_MAJOR == (major) && PA_MINOR == (minor) && PA_MICRO >= (micro)))
-#endif
-
-
struct GvcChannelMapPrivate
{
pa_channel_map pa_map;
@@ -49,7 +41,6 @@ struct GvcChannelMapPrivate
gdouble extern_volume[NUM_TYPES]; /* volume, balance, fade, lfe */
gboolean can_balance;
gboolean can_fade;
- gboolean has_lfe;
};
enum {
@@ -65,46 +56,8 @@ static void gvc_channel_map_finalize (GObject *object);
G_DEFINE_TYPE (GvcChannelMap, gvc_channel_map, G_TYPE_OBJECT)
-/* FIXME remove when we depend on a newer PA */
-static int
-gvc_pa_channel_map_has_position (const pa_channel_map *map, pa_channel_position_t p) {
- unsigned c;
-
- g_return_val_if_fail(pa_channel_map_valid(map), 0);
- g_return_val_if_fail(p < PA_CHANNEL_POSITION_MAX, 0);
-
- for (c = 0; c < map->channels; c++)
- if (map->map[c] == p)
- return 1;
-
- return 0;
-}
-
-#if !PA_CHECK_VERSION(0,9,16)
-/* The PulseAudio master increase version only when tagged, so let's avoid clashing with pa_ namespace */
-#define pa_cvolume_get_position gvc_cvolume_get_position
-static pa_volume_t
-gvc_cvolume_get_position (pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t) {
- unsigned c;
- pa_volume_t v = PA_VOLUME_MUTED;
-
- g_assert(cv);
- g_assert(map);
-
- g_return_val_if_fail(pa_cvolume_compatible_with_channel_map(cv, map), PA_VOLUME_MUTED);
- g_return_val_if_fail(t < PA_CHANNEL_POSITION_MAX, PA_VOLUME_MUTED);
-
- for (c = 0; c < map->channels; c++)
- if (map->map[c] == t)
- if (cv->values[c] > v)
- v = cv->values[c];
-
- return v;
-}
-#endif
-
guint
-gvc_channel_map_get_num_channels (GvcChannelMap *map)
+gvc_channel_map_get_num_channels (const GvcChannelMap *map)
{
g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), 0);
@@ -140,7 +93,7 @@ gvc_channel_map_get_volume (GvcChannelMap *map)
}
gboolean
-gvc_channel_map_can_balance (GvcChannelMap *map)
+gvc_channel_map_can_balance (const GvcChannelMap *map)
{
g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), FALSE);
@@ -148,7 +101,7 @@ gvc_channel_map_can_balance (GvcChannelMap *map)
}
gboolean
-gvc_channel_map_can_fade (GvcChannelMap *map)
+gvc_channel_map_can_fade (const GvcChannelMap *map)
{
g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), FALSE);
@@ -156,7 +109,7 @@ gvc_channel_map_can_fade (GvcChannelMap *map)
}
const char *
-gvc_channel_map_get_mapping (GvcChannelMap *map)
+gvc_channel_map_get_mapping (const GvcChannelMap *map)
{
g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL);
@@ -167,15 +120,16 @@ gvc_channel_map_get_mapping (GvcChannelMap *map)
}
gboolean
-gvc_channel_map_has_lfe (GvcChannelMap *map)
+gvc_channel_map_has_position (const GvcChannelMap *map,
+ pa_channel_position_t position)
{
g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), FALSE);
- return map->priv->has_lfe;
+ return pa_channel_map_has_position (&(map->priv->pa_map), position);
}
const pa_channel_map *
-gvc_channel_map_get_pa_channel_map (GvcChannelMap *map)
+gvc_channel_map_get_pa_channel_map (const GvcChannelMap *map)
{
g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL);
@@ -186,7 +140,7 @@ gvc_channel_map_get_pa_channel_map (GvcChannelMap *map)
}
const pa_cvolume *
-gvc_channel_map_get_cvolume (GvcChannelMap *map)
+gvc_channel_map_get_cvolume (const GvcChannelMap *map)
{
g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL);
@@ -274,7 +228,6 @@ set_from_pa_map (GvcChannelMap *map,
map->priv->can_balance = pa_channel_map_can_balance (pa_map);
map->priv->can_fade = pa_channel_map_can_fade (pa_map);
- map->priv->has_lfe = gvc_pa_channel_map_has_position (pa_map, PA_CHANNEL_POSITION_LFE);
map->priv->pa_map = *pa_map;
pa_cvolume_set(&map->priv->pa_volume, pa_map->channels, PA_VOLUME_NORM);
diff --git a/plugins/media-keys/cut-n-paste/gvc-channel-map.h b/plugins/media-keys/cut-n-paste/gvc-channel-map.h
index be07df5..1d1ba4e 100644
--- a/plugins/media-keys/cut-n-paste/gvc-channel-map.h
+++ b/plugins/media-keys/cut-n-paste/gvc-channel-map.h
@@ -62,20 +62,22 @@ GType gvc_channel_map_get_type (void);
GvcChannelMap * gvc_channel_map_new (void);
GvcChannelMap * gvc_channel_map_new_from_pa_channel_map (const pa_channel_map *map);
-guint gvc_channel_map_get_num_channels (GvcChannelMap *map);
+guint gvc_channel_map_get_num_channels (const GvcChannelMap *map);
const gdouble * gvc_channel_map_get_volume (GvcChannelMap *map);
-gboolean gvc_channel_map_can_balance (GvcChannelMap *map);
-gboolean gvc_channel_map_can_fade (GvcChannelMap *map);
-gboolean gvc_channel_map_has_lfe (GvcChannelMap *map);
+gboolean gvc_channel_map_can_balance (const GvcChannelMap *map);
+gboolean gvc_channel_map_can_fade (const GvcChannelMap *map);
+gboolean gvc_channel_map_has_position (const GvcChannelMap *map,
+ pa_channel_position_t position);
+#define gvc_channel_map_has_lfe(x) gvc_channel_map_has_position (x, PA_CHANNEL_POSITION_LFE)
void gvc_channel_map_volume_changed (GvcChannelMap *map,
const pa_cvolume *cv,
gboolean set);
-const char * gvc_channel_map_get_mapping (GvcChannelMap *map);
+const char * gvc_channel_map_get_mapping (const GvcChannelMap *map);
/* private */
-const pa_cvolume * gvc_channel_map_get_cvolume (GvcChannelMap *map);
-const pa_channel_map * gvc_channel_map_get_pa_channel_map (GvcChannelMap *map);
+const pa_cvolume * gvc_channel_map_get_cvolume (const GvcChannelMap *map);
+const pa_channel_map * gvc_channel_map_get_pa_channel_map (const GvcChannelMap *map);
#ifdef __cplusplus
}
#endif
diff --git a/plugins/media-keys/cut-n-paste/gvc-mixer-card.c b/plugins/media-keys/cut-n-paste/gvc-mixer-card.c
index 25c77c0..91bdf19 100644
--- a/plugins/media-keys/cut-n-paste/gvc-mixer-card.c
+++ b/plugins/media-keys/cut-n-paste/gvc-mixer-card.c
@@ -26,7 +26,7 @@
#include <unistd.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <pulse/pulseaudio.h>
@@ -47,6 +47,7 @@ struct GvcMixerCardPrivate
char *target_profile;
char *human_profile;
GList *profiles;
+ pa_operation *profile_op;
};
enum
@@ -209,6 +210,9 @@ _pa_context_set_card_profile_by_index_cb (pa_context *cont
}
g_free (card->priv->target_profile);
card->priv->target_profile = NULL;
+
+ pa_operation_unref (card->priv->profile_op);
+ card->priv->profile_op = NULL;
}
gboolean
@@ -223,25 +227,26 @@ gvc_mixer_card_change_profile (GvcMixerCard *card,
return TRUE;
if (g_strcmp0 (profile, card->priv->target_profile) == 0)
return TRUE;
+ if (card->priv->profile_op != NULL) {
+ pa_operation_cancel (card->priv->profile_op);
+ pa_operation_unref (card->priv->profile_op);
+ card->priv->profile_op = NULL;
+ }
if (card->priv->profile != NULL) {
- pa_operation *o;
-
g_free (card->priv->target_profile);
card->priv->target_profile = g_strdup (profile);
- o = pa_context_set_card_profile_by_index (card->priv->pa_context,
- card->priv->index,
- card->priv->target_profile,
- _pa_context_set_card_profile_by_index_cb,
- card);
+ card->priv->profile_op = pa_context_set_card_profile_by_index (card->priv->pa_context,
+ card->priv->index,
+ card->priv->target_profile,
+ _pa_context_set_card_profile_by_index_cb,
+ card);
- if (o == NULL) {
+ if (card->priv->profile_op == NULL) {
g_warning ("pa_context_set_card_profile_by_index() failed");
return FALSE;
}
-
- pa_operation_unref (o);
} else {
g_assert (card->priv->human_profile == NULL);
card->priv->profile = g_strdup (profile);
diff --git a/plugins/media-keys/cut-n-paste/gvc-mixer-card.h b/plugins/media-keys/cut-n-paste/gvc-mixer-card.h
index 7a19110..54a85e2 100644
--- a/plugins/media-keys/cut-n-paste/gvc-mixer-card.h
+++ b/plugins/media-keys/cut-n-paste/gvc-mixer-card.h
@@ -56,6 +56,7 @@ typedef struct
char *human_profile;
char *status;
guint priority;
+ guint n_sinks, n_sources;
} GvcMixerCardProfile;
GType gvc_mixer_card_get_type (void);
diff --git a/plugins/media-keys/cut-n-paste/gvc-mixer-control.c b/plugins/media-keys/cut-n-paste/gvc-mixer-control.c
index 2fed2e1..7f4532c 100644
--- a/plugins/media-keys/cut-n-paste/gvc-mixer-control.c
+++ b/plugins/media-keys/cut-n-paste/gvc-mixer-control.c
@@ -27,7 +27,7 @@
#include <unistd.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <pulse/pulseaudio.h>
#include <pulse/glib-mainloop.h>
@@ -448,6 +448,10 @@ _set_default_source (GvcMixerControl *control,
if (stream == NULL) {
control->priv->default_source_id = 0;
control->priv->default_source_is_set = FALSE;
+ g_signal_emit (control,
+ signals[DEFAULT_SOURCE_CHANGED],
+ 0,
+ PA_INVALID_INDEX);
return;
}
@@ -470,8 +474,16 @@ _set_default_sink (GvcMixerControl *control,
guint new_id;
if (stream == NULL) {
+ /* Don't tell front-ends about an unset default
+ * sink if it's already unset */
+ if (control->priv->default_sink_is_set == FALSE)
+ return;
control->priv->default_sink_id = 0;
control->priv->default_sink_is_set = FALSE;
+ g_signal_emit (control,
+ signals[DEFAULT_SINK_CHANGED],
+ 0,
+ PA_INVALID_INDEX);
return;
}
@@ -480,7 +492,6 @@ _set_default_sink (GvcMixerControl *control,
if (control->priv->default_sink_id != new_id) {
control->priv->default_sink_id = new_id;
control->priv->default_sink_is_set = TRUE;
-
g_signal_emit (control,
signals[DEFAULT_SINK_CHANGED],
0,
@@ -672,11 +683,13 @@ update_sink (GvcMixerControl *control,
max_volume = pa_cvolume_max (&info->volume);
gvc_mixer_stream_set_name (stream, info->name);
+ gvc_mixer_stream_set_card_index (stream, info->card);
gvc_mixer_stream_set_description (stream, info->description);
gvc_mixer_stream_set_icon_name (stream, "audio-card");
gvc_mixer_stream_set_volume (stream, (guint)max_volume);
gvc_mixer_stream_set_is_muted (stream, info->mute);
gvc_mixer_stream_set_can_decibel (stream, !!(info->flags & PA_SINK_DECIBEL_VOLUME));
+ gvc_mixer_stream_set_base_volume (stream, (guint32) info->base_volume);
#if PA_MICRO > 15
if (info->active_port != NULL)
gvc_mixer_stream_set_port (stream, info->active_port->name);
@@ -696,7 +709,7 @@ update_sink (GvcMixerControl *control,
}
if (map == NULL)
- map = gvc_mixer_stream_get_channel_map (stream);
+ map = (GvcChannelMap *) gvc_mixer_stream_get_channel_map (stream);
gvc_channel_map_volume_changed (map, &info->volume, FALSE);
}
@@ -759,6 +772,7 @@ update_source (GvcMixerControl *control,
max_volume = pa_cvolume_max (&info->volume);
gvc_mixer_stream_set_name (stream, info->name);
+ gvc_mixer_stream_set_card_index (stream, info->card);
gvc_mixer_stream_set_description (stream, info->description);
gvc_mixer_stream_set_icon_name (stream, "audio-input-microphone");
gvc_mixer_stream_set_volume (stream, (guint)max_volume);
@@ -1064,6 +1078,8 @@ update_card (GvcMixerControl *control,
profile->profile = g_strdup (pi.name);
profile->human_profile = g_strdup (pi.description);
profile->status = card_num_streams_to_status (pi.n_sinks, pi.n_sources);
+ profile->n_sinks = pi.n_sinks;
+ profile->n_sources = pi.n_sources;
profile->priority = pi.priority;
list = g_list_prepend (list, profile);
}
@@ -1328,6 +1344,17 @@ _pa_ext_stream_restore_read_cb (pa_context *context,
if (eol > 0) {
dec_outstanding (control);
+ /* If we don't have an event stream to restore, then
+ * set one up with a default 100% volume */
+ if (!control->priv->event_sink_input_is_set) {
+ pa_ext_stream_restore_info info;
+
+ memset (&info, 0, sizeof(info));
+ info.name = "sink-input-by-media-role:event";
+ info.volume.channels = 1;
+ info.volume.values[0] = PA_VOLUME_NORM;
+ update_event_role_stream (control, &info);
+ }
return;
}
diff --git a/plugins/media-keys/cut-n-paste/gvc-mixer-event-role.c b/plugins/media-keys/cut-n-paste/gvc-mixer-event-role.c
index a2d1169..594f951 100644
--- a/plugins/media-keys/cut-n-paste/gvc-mixer-event-role.c
+++ b/plugins/media-keys/cut-n-paste/gvc-mixer-event-role.c
@@ -25,7 +25,7 @@
#include <unistd.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <pulse/pulseaudio.h>
#include <pulse/ext-stream-restore.h>
@@ -58,7 +58,7 @@ update_settings (GvcMixerEventRole *role,
{
pa_operation *o;
guint index;
- GvcChannelMap *map;
+ const GvcChannelMap *map;
pa_context *context;
pa_ext_stream_restore_info info;
@@ -87,8 +87,8 @@ update_settings (GvcMixerEventRole *role,
return FALSE;
}
- if (op != NULL)
- *op = o;
+ if (op != NULL)
+ *op = o;
return TRUE;
}
diff --git a/plugins/media-keys/cut-n-paste/gvc-mixer-sink-input.c b/plugins/media-keys/cut-n-paste/gvc-mixer-sink-input.c
index 9dec302..1f4a06b 100644
--- a/plugins/media-keys/cut-n-paste/gvc-mixer-sink-input.c
+++ b/plugins/media-keys/cut-n-paste/gvc-mixer-sink-input.c
@@ -25,7 +25,7 @@
#include <unistd.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <pulse/pulseaudio.h>
@@ -48,12 +48,12 @@ G_DEFINE_TYPE (GvcMixerSinkInput, gvc_mixer_sink_input, GVC_TYPE_MIXER_STREAM)
static gboolean
gvc_mixer_sink_input_push_volume (GvcMixerStream *stream, gpointer *op)
{
- pa_operation *o;
- guint index;
- GvcChannelMap *map;
- pa_context *context;
- const pa_cvolume *cv;
- guint num_channels;
+ pa_operation *o;
+ guint index;
+ const GvcChannelMap *map;
+ pa_context *context;
+ const pa_cvolume *cv;
+ guint num_channels;
index = gvc_mixer_stream_get_index (stream);
diff --git a/plugins/media-keys/cut-n-paste/gvc-mixer-sink.c b/plugins/media-keys/cut-n-paste/gvc-mixer-sink.c
index ffccc8b..3ab7924 100644
--- a/plugins/media-keys/cut-n-paste/gvc-mixer-sink.c
+++ b/plugins/media-keys/cut-n-paste/gvc-mixer-sink.c
@@ -25,7 +25,7 @@
#include <unistd.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <pulse/pulseaudio.h>
@@ -48,11 +48,11 @@ G_DEFINE_TYPE (GvcMixerSink, gvc_mixer_sink, GVC_TYPE_MIXER_STREAM)
static gboolean
gvc_mixer_sink_push_volume (GvcMixerStream *stream, gpointer *op)
{
- pa_operation *o;
- guint index;
- GvcChannelMap *map;
- pa_context *context;
- const pa_cvolume *cv;
+ pa_operation *o;
+ guint index;
+ const GvcChannelMap *map;
+ pa_context *context;
+ const pa_cvolume *cv;
index = gvc_mixer_stream_get_index (stream);
@@ -133,7 +133,7 @@ gvc_mixer_sink_change_port (GvcMixerStream *stream,
return TRUE;
#else
- return FALSE;
+ return FALSE;
#endif /* PA_MICRO > 15 */
}
diff --git a/plugins/media-keys/cut-n-paste/gvc-mixer-source-output.c b/plugins/media-keys/cut-n-paste/gvc-mixer-source-output.c
index ec1efd9..7b63221 100644
--- a/plugins/media-keys/cut-n-paste/gvc-mixer-source-output.c
+++ b/plugins/media-keys/cut-n-paste/gvc-mixer-source-output.c
@@ -25,7 +25,7 @@
#include <unistd.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <pulse/pulseaudio.h>
diff --git a/plugins/media-keys/cut-n-paste/gvc-mixer-source.c b/plugins/media-keys/cut-n-paste/gvc-mixer-source.c
index 83b8afc..bc51f08 100644
--- a/plugins/media-keys/cut-n-paste/gvc-mixer-source.c
+++ b/plugins/media-keys/cut-n-paste/gvc-mixer-source.c
@@ -25,7 +25,7 @@
#include <unistd.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <pulse/pulseaudio.h>
@@ -48,11 +48,11 @@ G_DEFINE_TYPE (GvcMixerSource, gvc_mixer_source, GVC_TYPE_MIXER_STREAM)
static gboolean
gvc_mixer_source_push_volume (GvcMixerStream *stream, gpointer *op)
{
- pa_operation *o;
- guint index;
- GvcChannelMap *map;
- pa_context *context;
- const pa_cvolume *cv;
+ pa_operation *o;
+ guint index;
+ const GvcChannelMap *map;
+ pa_context *context;
+ const pa_cvolume *cv;
index = gvc_mixer_stream_get_index (stream);
@@ -133,7 +133,7 @@ gvc_mixer_source_change_port (GvcMixerStream *stream,
return TRUE;
#else
- return FALSE;
+ return FALSE;
#endif /* PA_MICRO > 15 */
}
diff --git a/plugins/media-keys/cut-n-paste/gvc-mixer-stream.c b/plugins/media-keys/cut-n-paste/gvc-mixer-stream.c
index 7b08828..7b1e0ec 100644
--- a/plugins/media-keys/cut-n-paste/gvc-mixer-stream.c
+++ b/plugins/media-keys/cut-n-paste/gvc-mixer-stream.c
@@ -25,7 +25,7 @@
#include <unistd.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <pulse/pulseaudio.h>
@@ -40,6 +40,7 @@ struct GvcMixerStreamPrivate
pa_context *pa_context;
guint id;
guint index;
+ gint card_index;
GvcChannelMap *channel_map;
char *name;
char *description;
@@ -73,6 +74,7 @@ enum
PROP_CAN_DECIBEL,
PROP_IS_EVENT_STREAM,
PROP_IS_VIRTUAL,
+ PROP_CARD_INDEX,
PROP_PORT,
};
@@ -117,7 +119,7 @@ gvc_mixer_stream_get_id (GvcMixerStream *stream)
return stream->priv->id;
}
-GvcChannelMap *
+const GvcChannelMap *
gvc_mixer_stream_get_channel_map (GvcMixerStream *stream)
{
g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
@@ -403,7 +405,7 @@ gvc_mixer_stream_set_base_volume (GvcMixerStream *stream,
return TRUE;
}
-GvcMixerStreamPort *
+const GvcMixerStreamPort *
gvc_mixer_stream_get_port (GvcMixerStream *stream)
{
GList *l;
@@ -489,6 +491,25 @@ gvc_mixer_stream_set_ports (GvcMixerStream *stream,
return TRUE;
}
+gint
+gvc_mixer_stream_get_card_index (GvcMixerStream *stream)
+{
+ g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), PA_INVALID_INDEX);
+ return stream->priv->card_index;
+}
+
+gboolean
+gvc_mixer_stream_set_card_index (GvcMixerStream *stream,
+ gint card_index)
+{
+ g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+ stream->priv->card_index = card_index;
+ g_object_notify (G_OBJECT (stream), "card-index");
+
+ return TRUE;
+}
+
static void
gvc_mixer_stream_set_property (GObject *object,
guint prop_id,
@@ -543,6 +564,9 @@ gvc_mixer_stream_set_property (GObject *object,
case PROP_PORT:
gvc_mixer_stream_set_port (self, g_value_get_string (value));
break;
+ case PROP_CARD_INDEX:
+ self->priv->card_index = g_value_get_long (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -605,6 +629,9 @@ gvc_mixer_stream_get_property (GObject *object,
case PROP_PORT:
g_value_set_string (value, self->priv->port);
break;
+ case PROP_CARD_INDEX:
+ g_value_set_long (value, self->priv->card_index);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -815,6 +842,13 @@ gvc_mixer_stream_class_init (GvcMixerStreamClass *klass)
"The name of the current port for this stream",
NULL,
G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class,
+ PROP_CARD_INDEX,
+ g_param_spec_long ("card-index",
+ "Card index",
+ "The index of the card for this stream",
+ PA_INVALID_INDEX, G_MAXLONG, PA_INVALID_INDEX,
+ G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
g_type_class_add_private (klass, sizeof (GvcMixerStreamPrivate));
}
@@ -844,6 +878,9 @@ gvc_mixer_stream_finalize (GObject *object)
g_return_if_fail (mixer_stream->priv != NULL);
+ g_object_unref (mixer_stream->priv->channel_map);
+ mixer_stream->priv->channel_map = NULL;
+
g_free (mixer_stream->priv->name);
mixer_stream->priv->name = NULL;
diff --git a/plugins/media-keys/cut-n-paste/gvc-mixer-stream.h b/plugins/media-keys/cut-n-paste/gvc-mixer-stream.h
index 6f7eab3..e818505 100644
--- a/plugins/media-keys/cut-n-paste/gvc-mixer-stream.h
+++ b/plugins/media-keys/cut-n-paste/gvc-mixer-stream.h
@@ -70,8 +70,8 @@ GType gvc_mixer_stream_get_type (void);
pa_context * gvc_mixer_stream_get_pa_context (GvcMixerStream *stream);
guint gvc_mixer_stream_get_index (GvcMixerStream *stream);
guint gvc_mixer_stream_get_id (GvcMixerStream *stream);
-GvcChannelMap * gvc_mixer_stream_get_channel_map (GvcMixerStream *stream);
-GvcMixerStreamPort *gvc_mixer_stream_get_port (GvcMixerStream *stream);
+const GvcChannelMap *gvc_mixer_stream_get_channel_map(GvcMixerStream *stream);
+const GvcMixerStreamPort *gvc_mixer_stream_get_port (GvcMixerStream *stream);
const GList * gvc_mixer_stream_get_ports (GvcMixerStream *stream);
gboolean gvc_mixer_stream_change_port (GvcMixerStream *stream,
const char *port);
@@ -92,6 +92,7 @@ const char * gvc_mixer_stream_get_description (GvcMixerStream *stream);
const char * gvc_mixer_stream_get_application_id (GvcMixerStream *stream);
gboolean gvc_mixer_stream_is_event_stream (GvcMixerStream *stream);
gboolean gvc_mixer_stream_is_virtual (GvcMixerStream *stream);
+gint gvc_mixer_stream_get_card_index (GvcMixerStream *stream);
/* private */
gboolean gvc_mixer_stream_set_volume (GvcMixerStream *stream,
@@ -120,6 +121,8 @@ gboolean gvc_mixer_stream_set_port (GvcMixerStream *stream,
const char *port);
gboolean gvc_mixer_stream_set_ports (GvcMixerStream *stream,
GList *ports);
+gboolean gvc_mixer_stream_set_card_index (GvcMixerStream *stream,
+ gint card_index);
#ifdef __cplusplus
}
diff --git a/plugins/media-keys/msd-media-keys-plugin.c b/plugins/media-keys/msd-media-keys-plugin.c
index 4d297bb..93a805f 100644
--- a/plugins/media-keys/msd-media-keys-plugin.c
+++ b/plugins/media-keys/msd-media-keys-plugin.c
@@ -102,3 +102,9 @@ msd_media_keys_plugin_class_init (MsdMediaKeysPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdMediaKeysPluginPrivate));
}
+
+static void
+msd_media_keys_plugin_class_finalize (MsdMediaKeysPluginClass *klass)
+{
+}
+
diff --git a/plugins/mouse/msd-mouse-plugin.c b/plugins/mouse/msd-mouse-plugin.c
index 9bd3d1b..19b96d7 100644
--- a/plugins/mouse/msd-mouse-plugin.c
+++ b/plugins/mouse/msd-mouse-plugin.c
@@ -102,3 +102,9 @@ msd_mouse_plugin_class_init (MsdMousePluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdMousePluginPrivate));
}
+
+static void
+msd_mouse_plugin_class_finalize (MsdMousePluginClass *klass)
+{
+}
+
diff --git a/plugins/smartcard/msd-smartcard-manager.c b/plugins/smartcard/msd-smartcard-manager.c
index 8207613..503123a 100644
--- a/plugins/smartcard/msd-smartcard-manager.c
+++ b/plugins/smartcard/msd-smartcard-manager.c
@@ -1321,7 +1321,7 @@ on_device_removed (MsdSmartcardManager *manager,
} else {
g_print ("disabling manager for 2 seconds\n");
msd_smartcard_manager_stop (manager);
- g_timeout_add (2000, (GSourceFunc) on_timeout, manager);
+ g_timeout_add_seconds (2, (GSourceFunc) on_timeout, manager);
}
}
diff --git a/plugins/smartcard/msd-smartcard-plugin.c b/plugins/smartcard/msd-smartcard-plugin.c
index 08f6e6c..ae1b264 100644
--- a/plugins/smartcard/msd-smartcard-plugin.c
+++ b/plugins/smartcard/msd-smartcard-plugin.c
@@ -338,3 +338,9 @@ msd_smartcard_plugin_class_init (MsdSmartcardPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdSmartcardPluginPrivate));
}
+
+static void
+msd_smartcard_plugin_class_finalize (MsdSmartcardPluginClass *klass)
+{
+}
+
diff --git a/plugins/sound/msd-sound-plugin.c b/plugins/sound/msd-sound-plugin.c
index ac31450..f0e0a1e 100644
--- a/plugins/sound/msd-sound-plugin.c
+++ b/plugins/sound/msd-sound-plugin.c
@@ -98,3 +98,9 @@ msd_sound_plugin_class_init (MsdSoundPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdSoundPluginPrivate));
}
+
+static void
+msd_sound_plugin_class_finalize (MsdSoundPluginClass *klass)
+{
+}
+
diff --git a/plugins/typing-break/msd-typing-break-plugin.c b/plugins/typing-break/msd-typing-break-plugin.c
index f0d3580..3b5770b 100644
--- a/plugins/typing-break/msd-typing-break-plugin.c
+++ b/plugins/typing-break/msd-typing-break-plugin.c
@@ -102,3 +102,8 @@ msd_typing_break_plugin_class_init (MsdTypingBreakPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdTypingBreakPluginPrivate));
}
+
+static void
+msd_typing_break_plugin_class_finalize (MsdTypingBreakPluginClass *klass)
+{
+}
diff --git a/plugins/xrandr/msd-xrandr-plugin.c b/plugins/xrandr/msd-xrandr-plugin.c
index e87baea..7680a0a 100644
--- a/plugins/xrandr/msd-xrandr-plugin.c
+++ b/plugins/xrandr/msd-xrandr-plugin.c
@@ -102,3 +102,9 @@ msd_xrandr_plugin_class_init (MsdXrandrPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdXrandrPluginPrivate));
}
+
+static void
+msd_xrandr_plugin_class_finalize (MsdXrandrPluginClass *klass)
+{
+}
+
diff --git a/plugins/xrdb/msd-xrdb-plugin.c b/plugins/xrdb/msd-xrdb-plugin.c
index 1506523..6c79c57 100644
--- a/plugins/xrdb/msd-xrdb-plugin.c
+++ b/plugins/xrdb/msd-xrdb-plugin.c
@@ -102,3 +102,9 @@ msd_xrdb_plugin_class_init (MsdXrdbPluginClass *klass)
g_type_class_add_private (klass, sizeof (MsdXrdbPluginPrivate));
}
+
+static void
+msd_xrdb_plugin_class_finalize (MsdXrdbPluginClass *klass)
+{
+}
+
diff --git a/plugins/xsettings/msd-xsettings-manager.c b/plugins/xsettings/msd-xsettings-manager.c
index e045711..f8291f4 100644
--- a/plugins/xsettings/msd-xsettings-manager.c
+++ b/plugins/xsettings/msd-xsettings-manager.c
@@ -659,7 +659,7 @@ gboolean
mate_xsettings_manager_start (MateXSettingsManager *manager,
GError **error)
{
- int i;
+ guint i;
GList *list, *l;
g_debug ("Starting xsettings manager");
@@ -689,6 +689,11 @@ mate_xsettings_manager_start (MateXSettingsManager *manager,
gsettings = g_hash_table_lookup (manager->priv->gsettings,
translations[i].gsettings_schema);
+ if (gsettings == NULL) {
+ g_warning ("Schemas '%s' has not been setup", translations[i].gsettings_schema);
+ continue;
+ }
+
val = g_settings_get_value (gsettings, translations[i].gsettings_key);
process_value (manager, &translations[i], val);
@@ -697,7 +702,8 @@ mate_xsettings_manager_start (MateXSettingsManager *manager,
list = g_hash_table_get_values (manager->priv->gsettings);
for (l = list; l != NULL; l = l->next) {
- g_signal_connect_object (G_OBJECT (l->data), "changed", G_CALLBACK (xsettings_callback), manager, 0);
+ g_signal_connect_object (G_OBJECT (l->data), "changed",
+ G_CALLBACK (xsettings_callback), manager, 0);
}
g_list_free (list);
diff --git a/plugins/xsettings/msd-xsettings-plugin.c b/plugins/xsettings/msd-xsettings-plugin.c
index 6449264..faa7068 100644
--- a/plugins/xsettings/msd-xsettings-plugin.c
+++ b/plugins/xsettings/msd-xsettings-plugin.c
@@ -102,3 +102,8 @@ mate_xsettings_plugin_class_init (MateXSettingsPluginClass *klass)
g_type_class_add_private (klass, sizeof (MateXSettingsPluginPrivate));
}
+
+static void
+mate_xsettings_plugin_class_finalize (MateXSettingsPluginClass *klass)
+{
+}