Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=devil505.git;a=commitdiff;h=9a8f1164712c84c3baa3df7396a9d36e40a7453e
commit 9a8f1164712c84c3baa3df7396a9d36e40a7453e Author: Devil505 <devil505li...@gmail.com> Date: Sun Sep 12 11:17:49 2010 +0200 gnome-settings-daemon-2.30.2-3-i686 * using pulseaudio instead of gstreamer * patched to use notify-osd diff --git a/source/gnome/gnome-settings-daemon/16_use_synchronous_notifications.patch b/source/gnome/gnome-settings-daemon/16_use_synchronous_notifications.patch new file mode 100644 index 0000000..f644e4c --- /dev/null +++ b/source/gnome/gnome-settings-daemon/16_use_synchronous_notifications.patch @@ -0,0 +1,629 @@ +Index: gnome-settings-daemon-2.30.0/plugins/common/gsd-osd-notification.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gnome-settings-daemon-2.30.0/plugins/common/gsd-osd-notification.c 2010-04-23 17:05:08.862133020 +0100 +@@ -0,0 +1,296 @@ ++/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */ ++/* ++ * gsd-osd-notification.c ++ * Copyright (C) 2010 Chris Coulson <chrisccoul...@ubuntu.com> ++ * Copyright (C) 2009 Canonical Ltd ++ * ++ * gsd-osd-notification.c 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 3 of the License, or ++ * (at your option) any later version. ++ * ++ * gsd-osd-notification.c 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, see <http://www.gnu.org/licenses/>. ++ */ ++ ++#include <libnotify/notify.h> ++#include "gsd-osd-notification.h" ++ ++struct _GsdOsdNotificationPrivate ++{ ++ NotifyNotification *notification; ++ char **icon_names; ++ char *hint; ++ guint icon_array_size; ++}; ++ ++#define GSD_OSD_NOTIFICATION_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_OSD_NOTIFICATION, GsdOsdNotificationPrivate)) ++ ++enum ++{ ++ PROP_0, ++ PROP_ICON_NAMES, ++ PROP_HINT ++}; ++ ++static NotifyNotification *icon_only_notification = NULL; ++static gulong handler_id; ++ ++#define NOTIFY_CAP_PRIVATE_SYNCHRONOUS "x-canonical-private-synchronous" ++#define NOTIFY_CAP_PRIVATE_ICON_ONLY "x-canonical-private-icon-only" ++#define NOTIFY_HINT_TRUE "true" ++ ++G_DEFINE_TYPE (GsdOsdNotification, gsd_osd_notification, G_TYPE_OBJECT); ++ ++static const char* ++_calculate_icon (GsdOsdNotification *notifier, guint value, gboolean muted) ++{ ++ guint s; ++ ++ s = (notifier->priv->icon_array_size -1) * value / 100 + 1; ++ s = MAX (s, 1); ++ s = MIN (s, notifier->priv->icon_array_size -1); ++ if (value <= 0) ++ s = 0; ++ ++ return muted ? notifier->priv->icon_names[0] : notifier->priv->icon_names[s]; ++} ++ ++void ++gsd_osd_notification_set_icon_array (GsdOsdNotification *notifier, const char **icon_names) ++{ ++ g_return_if_fail (GSD_IS_OSD_NOTIFICATION (notifier)); ++ ++ g_strfreev (notifier->priv->icon_names); ++ notifier->priv->icon_names = g_strdupv ((gchar **) icon_names); ++ ++ notifier->priv->icon_array_size = g_strv_length ((gchar **) icon_names); ++} ++ ++void ++gsd_osd_notification_set_hint (GsdOsdNotification *notifier, const char *hint) ++{ ++ g_return_if_fail (GSD_IS_OSD_NOTIFICATION (notifier)); ++ ++ g_free (notifier->priv->hint); ++ notifier->priv->hint = g_strdup (hint); ++} ++ ++gboolean ++gsd_osd_notification_is_supported (void) ++{ ++ GList *caps; ++ gboolean has_cap; ++ ++ caps = notify_get_server_caps (); ++ has_cap = (g_list_find_custom (caps, NOTIFY_CAP_PRIVATE_SYNCHRONOUS, (GCompareFunc) g_strcmp0) != NULL); ++ g_list_foreach (caps, (GFunc) g_free, NULL); ++ g_list_free (caps); ++ ++ return has_cap; ++} ++ ++static void ++notification_closed_cb (NotifyNotification *notification, ++ gpointer data) ++{ ++ g_signal_handler_disconnect (icon_only_notification, handler_id); ++ g_object_unref (icon_only_notification); ++ icon_only_notification = NULL; ++} ++ ++gboolean ++gsd_osd_notification_show_icon_only (const char *icon, const char *hint) ++{ ++ g_return_val_if_fail (icon != NULL, FALSE); ++ g_return_val_if_fail (hint != NULL, FALSE); ++ ++ if (!gsd_osd_notification_is_supported ()) ++ return FALSE; ++ ++ if (icon_only_notification == NULL) { ++ icon_only_notification = notify_notification_new (" ", "", icon, NULL); ++ notify_notification_set_hint_string (icon_only_notification, NOTIFY_CAP_PRIVATE_SYNCHRONOUS, hint); ++ notify_notification_set_hint_string (icon_only_notification, NOTIFY_CAP_PRIVATE_ICON_ONLY, NOTIFY_HINT_TRUE); ++ handler_id = g_signal_connect (icon_only_notification, "closed", G_CALLBACK (notification_closed_cb), NULL); ++ } else { ++ notify_notification_set_hint_string (icon_only_notification, NOTIFY_CAP_PRIVATE_SYNCHRONOUS, hint); ++ notify_notification_update (icon_only_notification, " ", "", icon); ++ } ++ ++ if (!notify_notification_show (icon_only_notification, NULL)) { ++ g_signal_handler_disconnect (icon_only_notification, handler_id); ++ g_object_unref (icon_only_notification); ++ icon_only_notification = NULL; ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++gboolean ++gsd_osd_notification_show_value (GsdOsdNotification *notifier, gint value, gboolean muted) ++{ ++ const char *icon; ++ ++ g_return_val_if_fail (GSD_IS_OSD_NOTIFICATION (notifier), FALSE); ++ g_return_val_if_fail (notifier->priv->icon_names != NULL, FALSE); ++ g_return_val_if_fail (notifier->priv->hint != NULL, FALSE); ++ ++ if (!gsd_osd_notification_is_supported ()) ++ return FALSE; ++ ++ if (notifier->priv->notification == NULL) { ++ notifier->priv->notification = notify_notification_new (" ", "", NULL, NULL); ++ notify_notification_set_hint_string (notifier->priv->notification, NOTIFY_CAP_PRIVATE_SYNCHRONOUS, notifier->priv->hint); ++} ++ if (notifier->priv->notification != NULL) { ++ value = MIN (value, 101); ++ value = MAX (value, -1); ++ icon = _calculate_icon (notifier, value, muted); ++ notify_notification_set_hint_int32(notifier->priv->notification, "value", (muted && value > 0) ? 0 : value); ++ notify_notification_update (notifier->priv->notification, " ", "", icon); ++ } else { ++ return FALSE; ++ } ++ ++ if (!notify_notification_show (notifier->priv->notification, NULL)) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++gboolean ++gsd_osd_notification_show_overshoot (GsdOsdNotification *notifier, GsdOsdNotifierOvershootType type) ++{ ++ gint value; ++ gboolean muted; ++ ++ g_return_val_if_fail (type == GSD_OSD_NOTIFICATION_UNDERSHOOT || type == GSD_OSD_NOTIFICATION_OVERSHOOT, FALSE); ++ ++ switch (type) ++ { ++ case GSD_OSD_NOTIFICATION_UNDERSHOOT: ++ value = -1; ++ muted = TRUE; ++ break; ++ case GSD_OSD_NOTIFICATION_OVERSHOOT: ++ value = 101; ++ muted = FALSE; ++ break; ++ default: ++ g_assert_not_reached (); ++ break; ++ } ++ ++ return gsd_osd_notification_show_value (notifier, value, muted); ++} ++ ++GsdOsdNotification* ++gsd_osd_notification_new (const char **icon_names, const char *hint) ++{ ++ return (GsdOsdNotification *) g_object_new (GSD_TYPE_OSD_NOTIFICATION, ++ "icon-names", icon_names, ++ "hint", hint, ++ NULL); ++} ++ ++static void ++gsd_osd_notification_init (GsdOsdNotification *object) ++{ ++ object->priv = GSD_OSD_NOTIFICATION_PRIVATE (object); ++ ++ if (!notify_is_initted ()) ++ notify_init (g_get_application_name ()); ++ ++ object->priv->hint = NULL; ++ object->priv->icon_names = NULL; ++ object->priv->notification = NULL; ++} ++ ++static void ++gsd_osd_notification_finalize (GObject *object) ++{ ++ GsdOsdNotification *notifier = GSD_OSD_NOTIFICATION (object); ++ ++ g_strfreev (notifier->priv->icon_names); ++ g_free (notifier->priv->hint); ++ ++ if (notifier->priv->notification) ++ g_object_unref (notifier->priv->notification); ++ ++ G_OBJECT_CLASS (gsd_osd_notification_parent_class)->finalize (object); ++} ++ ++static void ++gsd_osd_notification_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) ++{ ++ g_return_if_fail (GSD_IS_OSD_NOTIFICATION (object)); ++ GsdOsdNotification *notifier = GSD_OSD_NOTIFICATION (object); ++ ++ switch (prop_id) ++ { ++ case PROP_ICON_NAMES: ++ gsd_osd_notification_set_icon_array (notifier, (const char**) g_value_get_boxed (value)); ++ break; ++ case PROP_HINT: ++ gsd_osd_notification_set_hint (notifier, g_value_get_string (value)); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gsd_osd_notification_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) ++{ ++ g_return_if_fail (GSD_IS_OSD_NOTIFICATION (object)); ++ GsdOsdNotification *notifier = GSD_OSD_NOTIFICATION (object); ++ ++ switch (prop_id) ++ { ++ case PROP_ICON_NAMES: ++ g_value_set_boxed (value, notifier->priv->icon_names); ++ break; ++ case PROP_HINT: ++ g_value_set_string (value, notifier->priv->hint); ++ break; ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); ++ break; ++ } ++} ++ ++static void ++gsd_osd_notification_class_init (GsdOsdNotificationClass *klass) ++{ ++ GObjectClass* object_class = G_OBJECT_CLASS (klass); ++ ++ object_class->finalize = gsd_osd_notification_finalize; ++ object_class->set_property = gsd_osd_notification_set_property; ++ object_class->get_property = gsd_osd_notification_get_property; ++ ++ g_object_class_install_property (object_class, ++ PROP_ICON_NAMES, ++ g_param_spec_boxed ("icon-names", ++ "Icon name array", ++ "An array of icon names for the notification", ++ G_TYPE_STRV, ++ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)); ++ ++ g_object_class_install_property (object_class, ++ PROP_HINT, ++ g_param_spec_string ("hint", ++ "Notification hint", ++ "Hint for the notification", ++ NULL, ++ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)); ++ ++ g_type_class_add_private (klass, sizeof (GsdOsdNotificationPrivate)); ++} +Index: gnome-settings-daemon-2.30.0/plugins/common/gsd-osd-notification.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gnome-settings-daemon-2.30.0/plugins/common/gsd-osd-notification.h 2010-04-23 17:05:08.862133020 +0100 +@@ -0,0 +1,75 @@ ++/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */ ++/* ++ * gsd-osd-notification.c ++ * Copyright (C) 2010 Chris Coulson <chrisccoul...@ubuntu.com> ++ * Copyright (C) 2009 Canonical Ltd ++ * ++ * gsd-osd-notification.c 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 3 of the License, or ++ * (at your option) any later version. ++ * ++ * gsd-osd-notification.c 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, see <http://www.gnu.org/licenses/>. ++ */ ++ ++#ifndef _GSD_OSD_NOTIFICATION_H_ ++#define _GSD_OSD_NOTIFICATION_H_ ++ ++#include <glib-object.h> ++ ++G_BEGIN_DECLS ++ ++#define GSD_TYPE_OSD_NOTIFICATION (gsd_osd_notification_get_type ()) ++#define GSD_OSD_NOTIFICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSD_TYPE_OSD_NOTIFICATION, GsdOsdNotification)) ++#define GSD_OSD_NOTIFICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSD_TYPE_OSD_NOTIFICATION, GsdOsdNotificationClass)) ++#define GSD_IS_OSD_NOTIFICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSD_TYPE_OSD_NOTIFICATION)) ++#define GSD_IS_OSD_NOTIFICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSD_TYPE_OSD_NOTIFICATION)) ++#define GSD_OSD_NOTIFICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSD_TYPE_OSD_NOTIFICATION, GsdOsdNotificationClass)) ++ ++typedef struct _GsdOsdNotificationClass GsdOsdNotificationClass; ++typedef struct _GsdOsdNotification GsdOsdNotification; ++typedef struct _GsdOsdNotificationPrivate GsdOsdNotificationPrivate; ++ ++struct _GsdOsdNotificationClass ++{ ++ GObjectClass parent_class; ++}; ++ ++struct _GsdOsdNotification ++{ ++ GObject parent_instance; ++ ++ GsdOsdNotificationPrivate *priv; ++}; ++ ++typedef enum { ++ GSD_OSD_NOTIFICATION_NO_OVERSHOOT = 0, ++ GSD_OSD_NOTIFICATION_UNDERSHOOT, ++ GSD_OSD_NOTIFICATION_OVERSHOOT, ++} GsdOsdNotifierOvershootType; ++ ++GType gsd_osd_notification_get_type (void) G_GNUC_CONST; ++GsdOsdNotification* gsd_osd_notification_new (const char **icon_names, ++ const char *hint); ++void gsd_osd_notification_set_icon_array (GsdOsdNotification *notifier, ++ const char **icon_names); ++void gsd_osd_notification_set_hint (GsdOsdNotification *notifier, ++ const char *hint); ++gboolean gsd_osd_notification_is_supported (void); ++gboolean gsd_osd_notification_show_value (GsdOsdNotification *notifier, ++ gint value, ++ gboolean muted); ++gboolean gsd_osd_notification_show_overshoot (GsdOsdNotification *notifier, ++ GsdOsdNotifierOvershootType type); ++gboolean gsd_osd_notification_show_icon_only (const char *icon, ++ const char *hint); ++ ++G_END_DECLS ++ ++#endif /* _GSD_OSD_NOTIFICATION_H_ */ +Index: gnome-settings-daemon-2.30.0/plugins/media-keys/gsd-media-keys-manager.c +=================================================================== +--- gnome-settings-daemon-2.30.0.orig/plugins/media-keys/gsd-media-keys-manager.c 2010-03-29 09:15:04.000000000 +0100 ++++ gnome-settings-daemon-2.30.0/plugins/media-keys/gsd-media-keys-manager.c 2010-04-23 17:05:08.862133020 +0100 +@@ -49,6 +49,7 @@ + #include "eggaccelerators.h" + #include "acme.h" + #include "gsd-media-keys-window.h" ++#include "gsd-osd-notification.h" + + #ifdef HAVE_PULSE + #include <canberra-gtk.h> +@@ -82,6 +83,7 @@ + GtkWidget *dialog; + GConfClient *conf_client; + GVolumeMonitor *volume_monitor; ++ GsdOsdNotification *notifier; + + /* Multihead stuff */ + GdkScreen *current_screen; +@@ -108,6 +110,13 @@ + + static gpointer manager_object = NULL; + ++static const char *volume_icons[] = { ++ "notification-audio-volume-muted", ++ "notification-audio-volume-low", ++ "notification-audio-volume-medium", ++ "notification-audio-volume-high", ++ NULL ++}; + + static void + init_screens (GsdMediaKeysManager *manager) +@@ -612,11 +621,13 @@ + } + + /* Show the dialogue */ +- dialog_init (manager); +- gsd_media_keys_window_set_action_custom (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog), +- "media-eject", +- FALSE); +- dialog_show (manager); ++ if (!gsd_osd_notification_show_icon_only ("notification-device-eject", "Eject")) { ++ dialog_init (manager); ++ gsd_media_keys_window_set_action_custom (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog), ++ "media-eject", ++ FALSE); ++ dialog_show (manager); ++ } + + /* Clean up the drive selection and exit if no suitable + * drives are found */ +@@ -641,23 +652,44 @@ + GConfClient *client = manager->priv->conf_client; + gboolean state = gconf_client_get_bool (client, TOUCHPAD_ENABLED_KEY, NULL); + +- dialog_init (manager); +- gsd_media_keys_window_set_action_custom (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog), +- (!state) ? "touchpad-enabled" : "touchpad-disabled", +- FALSE); +- dialog_show (manager); ++ if (!gsd_osd_notification_show_icon_only ((!state) ? "touchpad-enabled" : "touchpad-disabled", "Touchpad")) { ++ dialog_init (manager); ++ gsd_media_keys_window_set_action_custom (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog), ++ (!state) ? "touchpad-enabled" : "touchpad-disabled", ++ FALSE); ++ dialog_show (manager); ++ } + + gconf_client_set_bool (client, TOUCHPAD_ENABLED_KEY, !state, NULL); + } + + #ifdef HAVE_PULSE ++play_volume_event_sound (GtkWidget *widget) ++{ ++ ca_gtk_play_for_widget (widget, 0, ++ CA_PROP_EVENT_ID, "audio-volume-change", ++ CA_PROP_EVENT_DESCRIPTION, "volume changed hrough key press", ++ CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl", ++ NULL); ++} ++ + static void + update_dialog (GsdMediaKeysManager *manager, + guint vol, + gboolean muted, +- gboolean sound_changed) ++ gboolean sound_changed, ++ GsdOsdNotifierOvershootType overshoot) + { ++ GtkWidget *window; ++ + vol = (int) (100 * (double) vol / PA_VOLUME_NORM); ++ if (overshoot != GSD_OSD_NOTIFICATION_NO_OVERSHOOT) { ++ if (gsd_osd_notification_show_overshoot (manager->priv->notifier, overshoot)) ++ goto done; ++ } else { ++ if (gsd_osd_notification_show_value (manager->priv->notifier, vol, muted)) ++ goto done; ++ } + vol = CLAMP (vol, 0, 100); + + dialog_init (manager); +@@ -668,12 +700,18 @@ + GSD_MEDIA_KEYS_WINDOW_ACTION_VOLUME); + dialog_show (manager); + +- if (sound_changed != FALSE && muted == FALSE) +- ca_gtk_play_for_widget (manager->priv->dialog, 0, +- CA_PROP_EVENT_ID, "audio-volume-change", +- CA_PROP_EVENT_DESCRIPTION, "volume changed through key press", +- CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl", +- NULL); ++done: ++ if (sound_changed != FALSE && muted == FALSE) { ++ if (manager->priv->dialog == NULL) { ++ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); ++ gtk_window_set_screen (GTK_WINDOW (window), manager->priv->current_screen); ++ gtk_widget_realize (window); ++ play_volume_event_sound (window); ++ gtk_widget_destroy (window); ++ } else { ++ play_volume_event_sound (manager->priv->dialog); ++ } ++ } + } + + static void +@@ -683,6 +721,7 @@ + gboolean muted; + guint vol, norm_vol_step; + int vol_step; ++ GsdOsdNotifierOvershootType overshoot = GSD_OSD_NOTIFICATION_NO_OVERSHOOT; + gboolean sound_changed; + + if (manager->priv->stream == NULL) +@@ -722,7 +761,10 @@ + if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE) { + gvc_mixer_stream_push_volume (manager->priv->stream); + sound_changed = TRUE; ++ gvc_mixer_stream_push_volume (manager->priv->stream); + } ++ } else { ++ overshoot = GSD_OSD_NOTIFICATION_UNDERSHOOT; + } + break; + case VOLUME_UP_KEY: +@@ -750,12 +792,14 @@ + gvc_mixer_stream_push_volume (manager->priv->stream); + sound_changed = TRUE; + } ++ } else { ++ overshoot = GSD_OSD_NOTIFICATION_OVERSHOOT; + } + } + break; + } + +- update_dialog (manager, vol, muted, sound_changed); ++ update_dialog (manager, vol, muted, sound_changed, overshoot); + } + + static void +@@ -900,8 +944,11 @@ + + static gboolean + do_multimedia_player_action (GsdMediaKeysManager *manager, ++ const char *icon, + const char *key) + { ++ if (icon != NULL) ++ gsd_osd_notification_show_icon_only (icon, key); + return gsd_media_player_key_pressed (manager, key); + } + +@@ -972,19 +1019,19 @@ + execute (manager, "gcalctool", FALSE, FALSE); + break; + case PLAY_KEY: +- return do_multimedia_player_action (manager, "Play"); ++ return do_multimedia_player_action (manager, NULL, "Play"); + break; + case PAUSE_KEY: +- return do_multimedia_player_action (manager, "Pause"); ++ return do_multimedia_player_action (manager, NULL, "Pause"); + break; + case STOP_KEY: +- return do_multimedia_player_action (manager, "Stop"); ++ return do_multimedia_player_action (manager, NULL, "Stop"); + break; + case PREVIOUS_KEY: +- return do_multimedia_player_action (manager, "Previous"); ++ return do_multimedia_player_action (manager, NULL, "Previous"); + break; + case NEXT_KEY: +- return do_multimedia_player_action (manager, "Next"); ++ return do_multimedia_player_action (manager, NULL, "Next"); + break; + default: + g_assert_not_reached (); +@@ -1121,6 +1168,8 @@ + + gvc_mixer_control_open (manager->priv->volume); + ++ manager->priv->notifier = gsd_osd_notification_new (volume_icons, "volume"); ++ + gnome_settings_profile_end ("gvc_mixer_control_new"); + #endif /* HAVE_PULSE */ + g_idle_add ((GSourceFunc) start_media_keys_idle_cb, manager); +@@ -1218,6 +1267,9 @@ + } + g_list_free (priv->media_players); + priv->media_players = NULL; ++ ++ if (manager->priv->notifier != NULL) ++ g_object_unref (manager->priv->notifier); + } + + static void +Index: gnome-settings-daemon-2.30.0/plugins/common/Makefile.am +=================================================================== +--- gnome-settings-daemon-2.30.0.orig/plugins/common/Makefile.am 2010-03-10 11:59:38.000000000 +0000 ++++ gnome-settings-daemon-2.30.0/plugins/common/Makefile.am 2010-04-23 17:10:43.209632216 +0100 +@@ -7,17 +7,21 @@ + gsd-keygrab.c \ + gsd-keygrab.h \ + gsd-osd-window.c \ +- gsd-osd-window.h ++ gsd-osd-window.h \ ++ gsd-osd-notification.c \ ++ gsd-osd-notification.h + + libcommon_la_CPPFLAGS = \ + $(AM_CPPFLAGS) + + libcommon_la_CFLAGS = \ + $(SETTINGS_PLUGIN_CFLAGS) \ ++ $(LIBNOTIFY_CFLAGS) \ + $(AM_CFLAGS) + + libcommon_la_LDFLAGS = \ + $(GSD_PLUGIN_LDFLAGS) $(X11_LIBS) + + libcommon_la_LIBADD = \ +- $(SETTINGS_PLUGIN_LIBS) ++ $(SETTINGS_PLUGIN_LIBS) \ ++ $(LIBNOTIFY_LIBS) diff --git a/source/gnome/gnome-settings-daemon/FrugalBuild b/source/gnome/gnome-settings-daemon/FrugalBuild index b479079..4956894 100644 --- a/source/gnome/gnome-settings-daemon/FrugalBuild +++ b/source/gnome/gnome-settings-daemon/FrugalBuild @@ -3,9 +3,9 @@ pkgname=gnome-settings-daemon pkgver=2.30.2 -pkgrel=2 +pkgrel=3 pkgdesc="Utility library for accessing gnome-settings-daemon over DBUS" -depends=('libgnomekbd>=2.30.2' 'esd' 'gst-plugins-base>=0.10.22-2' 'libgnomeui' 'libxxf86misc' \ +depends=('libgnomekbd>=2.30.2' 'esd' 'pulseaudio' 'libgnomeui' 'libxxf86misc' \ 'gnome-desktop>=2.30.0-2' 'gconf' 'alsa-lib') makedepends=('intltool' 'gtk-doc>=1.11' 'gnome-doc-utils>=0.14.0') groups=('gnome' 'gnome-minimal') @@ -20,11 +20,12 @@ _F_gnome_schemas=('/etc/gconf/schemas/apps_gnome_settings_daemon_keybindings.sch _F_gnome_scrollkeeper="y" _F_gnome_iconcache="y" Finclude gnome gnome-scriptlet -source=(${sour...@]} default_dpi.patch gnome-settings-daemon-2.30.0-gst-vol-control-support.patch) +source=(${sour...@]} default_dpi.patch \ + 16_use_synchronous_notifications.patch) sha1sums=('75fe75eaa7d6197514c1de8b8c47c869f2bade2c' \ '6f81881a667cc5eb000314541a65bd52319986af' \ - '8db1dde75b1866619d6589e989ed27fc45050c50') -Fconfopts="$Fconfopts --enable-gstreamer" + '13ff5b88298ae05b3f42a853c71c0a710e782440') +Fconfopts="$Fconfopts --enable-pulse" build() { Fcd _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git