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

Reply via email to