aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am5
-rw-r--r--Makefile.in6
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac4
-rw-r--r--po/POTFILES.in1
-rw-r--r--src/Makefile.am20
-rw-r--r--src/Makefile.in43
-rw-r--r--src/active-sink.c349
-rw-r--r--src/active-sink.h85
-rw-r--r--src/common-defs.h6
-rw-r--r--src/device.c289
-rw-r--r--src/device.h84
-rw-r--r--src/fetch-file.c26
-rw-r--r--src/freedesktop-interfaces.c2
-rw-r--r--src/indicator-sound.c56
-rw-r--r--src/metadata-menu-item.c34
-rw-r--r--src/mpris2-controller.c224
-rw-r--r--src/mpris2-interfaces.c13
-rw-r--r--src/mpris2-watcher.c74
-rw-r--r--src/music-player-bridge.c107
-rw-r--r--src/music-player-bridge.h2
-rw-r--r--src/player-controller.c60
-rw-r--r--src/player-item.c13
-rw-r--r--src/playlists-menu-item.c58
-rw-r--r--src/playlists-menu-item.vala10
-rw-r--r--src/pulseaudio-mgr.c88
-rw-r--r--src/pulseaudio-mgr.h4
-rw-r--r--src/settings-manager.c6
-rw-r--r--src/slider-menu-item.c134
-rw-r--r--src/slider-menu-item.h12
-rw-r--r--src/sound-service-dbus.c10
-rw-r--r--src/sound-service.c6
-rw-r--r--src/title-menu-item.c2
-rw-r--r--src/transport-menu-item.c18
-rw-r--r--src/voip-input-menu-item.c6
-rw-r--r--src/voip-input-menu-item.h4
-rw-r--r--src/voip-input-widget.c4
-rw-r--r--src/volume-widget.c39
-rw-r--r--vapi/config.vapi8
39 files changed, 1018 insertions, 914 deletions
diff --git a/Makefile.am b/Makefile.am
index 86af943..1742c47 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,7 +4,10 @@ SUBDIRS = \
data \
po
-EXTRA_DIST = autogen.sh vapi/common-defs.vapi
+EXTRA_DIST = \
+ autogen.sh \
+ vapi/common-defs.vapi \
+ vapi/config.vapi
DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall
diff --git a/Makefile.in b/Makefile.in
index 1a77919..240a43c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -271,7 +271,11 @@ SUBDIRS = \
data \
po
-EXTRA_DIST = autogen.sh vapi/common-defs.vapi
+EXTRA_DIST = \
+ autogen.sh \
+ vapi/common-defs.vapi \
+ vapi/config.vapi
+
DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
diff --git a/configure b/configure
index abd39c0..2547385 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for indicator-sound 0.6.3.
+# Generated by GNU Autoconf 2.67 for indicator-sound 0.6.4.
#
# Report bugs to <conor.curran@canonical.com>.
#
@@ -761,8 +761,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='indicator-sound'
PACKAGE_TARNAME='indicator-sound'
-PACKAGE_VERSION='0.6.3'
-PACKAGE_STRING='indicator-sound 0.6.3'
+PACKAGE_VERSION='0.6.4'
+PACKAGE_STRING='indicator-sound 0.6.4'
PACKAGE_BUGREPORT='conor.curran@canonical.com'
PACKAGE_URL=''
@@ -1564,7 +1564,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures indicator-sound 0.6.3 to adapt to many kinds of systems.
+\`configure' configures indicator-sound 0.6.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1634,7 +1634,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of indicator-sound 0.6.3:";;
+ short | recursive ) echo "Configuration of indicator-sound 0.6.4:";;
esac
cat <<\_ACEOF
@@ -1767,7 +1767,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-indicator-sound configure 0.6.3
+indicator-sound configure 0.6.4
generated by GNU Autoconf 2.67
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2136,7 +2136,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by indicator-sound $as_me 0.6.3, which was
+It was created by indicator-sound $as_me 0.6.4, which was
generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@
@@ -2956,7 +2956,7 @@ fi
# Define the identity of the package.
PACKAGE=indicator-sound
- VERSION=0.6.3
+ VERSION=0.6.4
cat >>confdefs.h <<_ACEOF
@@ -14349,7 +14349,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by indicator-sound $as_me 0.6.3, which was
+This file was extended by indicator-sound $as_me 0.6.4, which was
generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14415,7 +14415,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-indicator-sound config.status 0.6.3
+indicator-sound config.status 0.6.4
configured by $0, generated by GNU Autoconf 2.67,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 88535b1..796b124 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,10 +1,10 @@
-AC_INIT(indicator-sound, 0.6.3, conor.curran@canonical.com)
+AC_INIT(indicator-sound, 0.6.4, conor.curran@canonical.com)
AC_PREREQ(2.53)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(indicator-sound, 0.6.3)
+AM_INIT_AUTOMAKE(indicator-sound, 0.6.4)
AM_MAINTAINER_MODE
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 2f68d1a..35c47bd 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -2,3 +2,4 @@
src/indicator-sound.c
src/mute-menu-item.c
src/sound-service-dbus.c
+src/playlists-menu-item.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 7525d71..ae0d55a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -56,8 +56,7 @@ music_bridge_VALASOURCES = \
settings-manager.vala \
playlists-menu-item.vala \
freedesktop-interfaces.vala \
- fetch-file.vala
-
+ fetch-file.vala
music_bridge_VALAFLAGS = \
--ccode \
@@ -69,10 +68,11 @@ music_bridge_VALAFLAGS = \
--pkg gee-1.0 \
--pkg Dbusmenu-0.4 \
--pkg common-defs \
- --pkg gio-2.0 \
- --pkg gio-unix-2.0 \
- --pkg gdk-pixbuf-2.0 \
- --pkg libxml-2.0
+ --pkg config \
+ --pkg gio-2.0 \
+ --pkg gio-unix-2.0 \
+ --pkg gdk-pixbuf-2.0 \
+ --pkg libxml-2.0
$(MAINTAINER_VALAFLAGS)
@@ -92,8 +92,8 @@ indicator_sound_service_SOURCES = \
sound-service.c \
pulseaudio-mgr.h \
pulseaudio-mgr.c \
- active-sink.c \
- active-sink.h \
+ device.c \
+ device.h \
sound-service-dbus.h \
sound-service-dbus.c \
slider-menu-item.h \
@@ -137,10 +137,10 @@ EXTRA_DIST = \
#######################
BUILT_SOURCES = \
music_bridge_vala.stamp \
- $(music_bridge_APIFILES) \
+ $(music_bridge_APIFILES) \
gen-sound-service.xml.h \
gen-sound-service.xml.c \
- $(music_bridge_VALASOURCES:.vala=.c)
+ $(music_bridge_VALASOURCES:.vala=.c)
CLEANFILES = \
$(BUILT_SOURCES)
diff --git a/src/Makefile.in b/src/Makefile.in
index df50c00..0cffd55 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -105,7 +105,7 @@ am__objects_1 = indicator_sound_service-music-player-bridge.$(OBJEXT) \
am_indicator_sound_service_OBJECTS = \
indicator_sound_service-sound-service.$(OBJEXT) \
indicator_sound_service-pulseaudio-mgr.$(OBJEXT) \
- indicator_sound_service-active-sink.$(OBJEXT) \
+ indicator_sound_service-device.$(OBJEXT) \
indicator_sound_service-sound-service-dbus.$(OBJEXT) \
indicator_sound_service-slider-menu-item.$(OBJEXT) \
indicator_sound_service-voip-input-menu-item.$(OBJEXT) \
@@ -361,7 +361,7 @@ music_bridge_VALASOURCES = \
settings-manager.vala \
playlists-menu-item.vala \
freedesktop-interfaces.vala \
- fetch-file.vala
+ fetch-file.vala
music_bridge_VALAFLAGS = \
--ccode \
@@ -373,10 +373,11 @@ music_bridge_VALAFLAGS = \
--pkg gee-1.0 \
--pkg Dbusmenu-0.4 \
--pkg common-defs \
- --pkg gio-2.0 \
- --pkg gio-unix-2.0 \
- --pkg gdk-pixbuf-2.0 \
- --pkg libxml-2.0
+ --pkg config \
+ --pkg gio-2.0 \
+ --pkg gio-unix-2.0 \
+ --pkg gdk-pixbuf-2.0 \
+ --pkg libxml-2.0
music_bridge_APIFILES = \
music-player-bridge.h
@@ -391,8 +392,8 @@ indicator_sound_service_SOURCES = \
sound-service.c \
pulseaudio-mgr.h \
pulseaudio-mgr.c \
- active-sink.c \
- active-sink.h \
+ device.c \
+ device.h \
sound-service-dbus.h \
sound-service-dbus.c \
slider-menu-item.h \
@@ -426,10 +427,10 @@ EXTRA_DIST = \
#######################
BUILT_SOURCES = \
music_bridge_vala.stamp \
- $(music_bridge_APIFILES) \
+ $(music_bridge_APIFILES) \
gen-sound-service.xml.h \
gen-sound-service.xml.c \
- $(music_bridge_VALASOURCES:.vala=.c)
+ $(music_bridge_VALASOURCES:.vala=.c)
CLEANFILES = \
$(BUILT_SOURCES)
@@ -555,7 +556,7 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indicator_sound_service-active-sink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indicator_sound_service-device.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indicator_sound_service-fetch-file.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indicator_sound_service-freedesktop-interfaces.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indicator_sound_service-gen-sound-service.xml.Po@am__quote@
@@ -705,21 +706,21 @@ indicator_sound_service-pulseaudio-mgr.obj: pulseaudio-mgr.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_sound_service_CFLAGS) $(CFLAGS) -c -o indicator_sound_service-pulseaudio-mgr.obj `if test -f 'pulseaudio-mgr.c'; then $(CYGPATH_W) 'pulseaudio-mgr.c'; else $(CYGPATH_W) '$(srcdir)/pulseaudio-mgr.c'; fi`
-indicator_sound_service-active-sink.o: active-sink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_sound_service_CFLAGS) $(CFLAGS) -MT indicator_sound_service-active-sink.o -MD -MP -MF $(DEPDIR)/indicator_sound_service-active-sink.Tpo -c -o indicator_sound_service-active-sink.o `test -f 'active-sink.c' || echo '$(srcdir)/'`active-sink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/indicator_sound_service-active-sink.Tpo $(DEPDIR)/indicator_sound_service-active-sink.Po
+indicator_sound_service-device.o: device.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_sound_service_CFLAGS) $(CFLAGS) -MT indicator_sound_service-device.o -MD -MP -MF $(DEPDIR)/indicator_sound_service-device.Tpo -c -o indicator_sound_service-device.o `test -f 'device.c' || echo '$(srcdir)/'`device.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/indicator_sound_service-device.Tpo $(DEPDIR)/indicator_sound_service-device.Po
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='active-sink.c' object='indicator_sound_service-active-sink.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='device.c' object='indicator_sound_service-device.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_sound_service_CFLAGS) $(CFLAGS) -c -o indicator_sound_service-active-sink.o `test -f 'active-sink.c' || echo '$(srcdir)/'`active-sink.c
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_sound_service_CFLAGS) $(CFLAGS) -c -o indicator_sound_service-device.o `test -f 'device.c' || echo '$(srcdir)/'`device.c
-indicator_sound_service-active-sink.obj: active-sink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_sound_service_CFLAGS) $(CFLAGS) -MT indicator_sound_service-active-sink.obj -MD -MP -MF $(DEPDIR)/indicator_sound_service-active-sink.Tpo -c -o indicator_sound_service-active-sink.obj `if test -f 'active-sink.c'; then $(CYGPATH_W) 'active-sink.c'; else $(CYGPATH_W) '$(srcdir)/active-sink.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/indicator_sound_service-active-sink.Tpo $(DEPDIR)/indicator_sound_service-active-sink.Po
+indicator_sound_service-device.obj: device.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_sound_service_CFLAGS) $(CFLAGS) -MT indicator_sound_service-device.obj -MD -MP -MF $(DEPDIR)/indicator_sound_service-device.Tpo -c -o indicator_sound_service-device.obj `if test -f 'device.c'; then $(CYGPATH_W) 'device.c'; else $(CYGPATH_W) '$(srcdir)/device.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/indicator_sound_service-device.Tpo $(DEPDIR)/indicator_sound_service-device.Po
@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='active-sink.c' object='indicator_sound_service-active-sink.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='device.c' object='indicator_sound_service-device.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_sound_service_CFLAGS) $(CFLAGS) -c -o indicator_sound_service-active-sink.obj `if test -f 'active-sink.c'; then $(CYGPATH_W) 'active-sink.c'; else $(CYGPATH_W) '$(srcdir)/active-sink.c'; fi`
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_sound_service_CFLAGS) $(CFLAGS) -c -o indicator_sound_service-device.obj `if test -f 'device.c'; then $(CYGPATH_W) 'device.c'; else $(CYGPATH_W) '$(srcdir)/device.c'; fi`
indicator_sound_service-sound-service-dbus.o: sound-service-dbus.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_sound_service_CFLAGS) $(CFLAGS) -MT indicator_sound_service-sound-service-dbus.o -MD -MP -MF $(DEPDIR)/indicator_sound_service-sound-service-dbus.Tpo -c -o indicator_sound_service-sound-service-dbus.o `test -f 'sound-service-dbus.c' || echo '$(srcdir)/'`sound-service-dbus.c
diff --git a/src/active-sink.c b/src/active-sink.c
deleted file mode 100644
index a78d33e..0000000
--- a/src/active-sink.c
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
-Copyright 2011 Canonical Ltd.
-
-Authors:
- Conor Curran <conor.curran@canonical.com>
-
-This program is free software: you can redistribute it and/or modify it
-under the terms of the GNU General Public License version 3, as published
-by the Free Software Foundation.
-
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranties of
-MERCHANTABILITY, SATISFACTORY QUALITY, 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 <libdbusmenu-glib/menuitem.h>
-
-#include "active-sink.h"
-#include "slider-menu-item.h"
-#include "mute-menu-item.h"
-#include "voip-input-menu-item.h"
-#include "pulseaudio-mgr.h"
-
-typedef struct _ActiveSinkPrivate ActiveSinkPrivate;
-
-struct _ActiveSinkPrivate
-{
- SliderMenuItem* volume_slider_menuitem;
- MuteMenuItem* mute_menuitem;
- VoipInputMenuItem* voip_input_menu_item;
- SoundState current_sound_state;
- SoundServiceDbus* service;
- gint index;
- gchar* name;
- pa_cvolume volume;
- pa_channel_map channel_map;
- pa_volume_t base_volume;
-};
-
-#define ACTIVE_SINK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ACTIVE_SINK_TYPE, ActiveSinkPrivate))
-
-/* Prototypes */
-static void active_sink_class_init (ActiveSinkClass *klass);
-static void active_sink_init (ActiveSink *self);
-static void active_sink_dispose (GObject *object);
-static void active_sink_finalize (GObject *object);
-
-static SoundState active_sink_get_state_from_volume (ActiveSink* self);
-static pa_cvolume active_sink_construct_mono_volume (const pa_cvolume* vol);
-static void active_sink_volume_update (ActiveSink* self, gdouble percent);
-static void active_sink_mute_update (ActiveSink* self, gboolean muted);
-
-G_DEFINE_TYPE (ActiveSink, active_sink, G_TYPE_OBJECT);
-
-static void
-active_sink_class_init (ActiveSinkClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- g_type_class_add_private (klass, sizeof (ActiveSinkPrivate));
-
- gobject_class->dispose = active_sink_dispose;
- gobject_class->finalize = active_sink_finalize;
-}
-
-static void
-active_sink_init (ActiveSink *self)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- priv->mute_menuitem = NULL;
- priv->volume_slider_menuitem = NULL;
- priv->voip_input_menu_item = NULL;
- priv->current_sound_state = UNAVAILABLE;
- priv->index = -1;
- priv->name = NULL;
- priv->service = NULL;
-
- // Init our menu items.
- priv->mute_menuitem = g_object_new (MUTE_MENU_ITEM_TYPE, NULL);
- priv->voip_input_menu_item = g_object_new (VOIP_INPUT_MENU_ITEM_TYPE, NULL);;
- priv->volume_slider_menuitem = slider_menu_item_new (self);
- mute_menu_item_enable (priv->mute_menuitem, FALSE);
- slider_menu_item_enable (priv->volume_slider_menuitem, FALSE);
-}
-
-static void
-active_sink_dispose (GObject *object)
-{
- G_OBJECT_CLASS (active_sink_parent_class)->dispose (object);
-}
-
-static void
-active_sink_finalize (GObject *object)
-{
- G_OBJECT_CLASS (active_sink_parent_class)->finalize (object);
-}
-
-void
-active_sink_populate (ActiveSink* sink,
- const pa_sink_info* update)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE(sink);
-
- priv->name = g_strdup (update->name);
- priv->index = update->index;
- active_sink_mute_update (sink, update->mute);
- priv->volume = active_sink_construct_mono_volume (&update->volume);
- priv->base_volume = update->base_volume;
- priv->channel_map = update->channel_map;
-
- pa_volume_t vol = pa_cvolume_max (&update->volume);
- gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM;
-
- active_sink_volume_update (sink, volume_percent);
- active_sink_mute_update (sink, update->mute);
- mute_menu_item_enable (priv->mute_menuitem, TRUE);
- slider_menu_item_enable (priv->volume_slider_menuitem, TRUE);
-
- g_debug ("Active sink has been populated - volume %f", volume_percent);
-}
-
-void
-active_sink_activate_voip_item (ActiveSink* self, gint sink_input_index, gint client_index)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- if (voip_input_menu_item_is_interested (priv->voip_input_menu_item,
- sink_input_index,
- client_index)){
- voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE);
- }
-}
-
-void
-active_sink_deactivate_voip_source (ActiveSink* self, gboolean visible)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- visible &= voip_input_menu_item_is_active (priv->voip_input_menu_item);
- voip_input_menu_item_deactivate_source (priv->voip_input_menu_item, visible);
-}
-
-void
-active_sink_deactivate_voip_client (ActiveSink* self)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- voip_input_menu_item_deactivate_voip_client (priv->voip_input_menu_item);
-}
-
-void
-active_sink_update (ActiveSink* sink,
- const pa_sink_info* update)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (sink);
- active_sink_mute_update (sink, update->mute);
- priv->volume = active_sink_construct_mono_volume (&update->volume);
- priv->base_volume = update->base_volume;
- priv->channel_map = update->channel_map;
-
- pa_volume_t vol = pa_cvolume_max (&update->volume);
- gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM;
-
- active_sink_volume_update (sink, volume_percent);
- active_sink_mute_update (sink, update->mute);
-}
-
-// To the UI
-static void
-active_sink_volume_update (ActiveSink* self, gdouble percent)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- slider_menu_item_update (priv->volume_slider_menuitem, percent);
- SoundState state = active_sink_get_state_from_volume (self);
- if (priv->current_sound_state != state){
- priv->current_sound_state = state;
- sound_service_dbus_update_sound_state (priv->service,
- priv->current_sound_state);
- }
-}
-
-// From the UI
-void
-active_sink_update_volume (ActiveSink* self, gdouble percent)
-{
- pa_cvolume new_volume;
- pa_cvolume_init(&new_volume);
- new_volume.channels = 1;
- pa_volume_t new_volume_value = (pa_volume_t) ((percent * PA_VOLUME_NORM) / 100);
- pa_cvolume_set(&new_volume, 1, new_volume_value);
-
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
-
- pa_cvolume_set(&priv->volume, priv->channel_map.channels, new_volume_value);
- pm_update_volume (priv->index, new_volume);
-}
-
-
-gint
-active_sink_get_current_sink_input_index (ActiveSink* sink)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (sink);
- return voip_input_menu_item_get_sink_input_index (priv->voip_input_menu_item);
-}
-
-static void
-active_sink_mute_update (ActiveSink* self, gboolean muted)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- mute_menu_item_update (priv->mute_menuitem, muted);
- SoundState state = active_sink_get_state_from_volume (self);
-
- if (muted == TRUE){
- state = MUTED;
- }
- if (priv->current_sound_state != state){
- priv->current_sound_state = state;
- sound_service_dbus_update_sound_state (priv->service, state);
- }
-}
-
-void
-active_sink_ensure_sink_is_unmuted (ActiveSink* self)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- if (mute_menu_item_is_muted (priv->mute_menuitem)){
- pm_update_mute (FALSE);
- }
-}
-
-
-static SoundState
-active_sink_get_state_from_volume (ActiveSink* self)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- GVariant* v = dbusmenu_menuitem_property_get_variant (DBUSMENU_MENUITEM(priv->volume_slider_menuitem),
- DBUSMENU_VOLUME_MENUITEM_LEVEL);
- gdouble volume_percent = g_variant_get_double (v);
-
- SoundState state = LOW_LEVEL;
-
- if (volume_percent < 30.0 && volume_percent > 0) {
- state = LOW_LEVEL;
- }
- else if (volume_percent < 70.0 && volume_percent >= 30.0) {
- state = MEDIUM_LEVEL;
- }
- else if (volume_percent >= 70.0) {
- state = HIGH_LEVEL;
- }
- else if (volume_percent == 0.0) {
- state = ZERO_LEVEL;
- }
- return state;
-}
-
-pa_cvolume
-active_sink_construct_mono_volume (const pa_cvolume* vol)
-{
- pa_cvolume new_volume;
- pa_cvolume_init(&new_volume);
- new_volume.channels = 1;
- pa_volume_t max_vol = pa_cvolume_max(vol);
- pa_cvolume_set(&new_volume, 1, max_vol);
- return new_volume;
-}
-
-void
-active_sink_determine_blocking_state (ActiveSink* self)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- if (mute_menu_item_is_muted (priv->mute_menuitem)){
- /**
- We don't want to set the current state to blocking
- as this is a fire and forget event.
- */
- sound_service_dbus_update_sound_state (priv->service,
- BLOCKED);
- }
-}
-
-gint
-active_sink_get_index (ActiveSink* self)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- return priv->index;
-}
-
-gboolean
-active_sink_is_populated (ActiveSink* sink)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (sink);
- return (priv->index != -1);
-}
-
-void
-active_sink_deactivate (ActiveSink* self)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- priv->current_sound_state = UNAVAILABLE;
- sound_service_dbus_update_sound_state (priv->service,
- priv->current_sound_state);
- mute_menu_item_enable (priv->mute_menuitem, FALSE);
- slider_menu_item_enable (priv->volume_slider_menuitem, FALSE);
- priv->index = -1;
- g_free(priv->name);
- priv->name = NULL;
-}
-
-SoundState
-active_sink_get_state (ActiveSink* self)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- return priv->current_sound_state;
-}
-
-void
-active_sink_update_voip_input_source (ActiveSink* self, const pa_source_info* update)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- voip_input_menu_item_update (priv->voip_input_menu_item, update);
-}
-
-gboolean
-active_sink_is_voip_source_populated (ActiveSink* self)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- return voip_input_menu_item_is_populated (priv->voip_input_menu_item);
-}
-
-gint active_sink_get_source_index (ActiveSink* self)
-{
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self);
- return voip_input_menu_item_get_index (priv->voip_input_menu_item);
-}
-
-ActiveSink*
-active_sink_new (SoundServiceDbus* service)
-{
- ActiveSink* sink = g_object_new (ACTIVE_SINK_TYPE, NULL);
- ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (sink);
- priv->service = service;
- sound_service_dbus_build_sound_menu (service,
- mute_menu_item_get_button (priv->mute_menuitem),
- DBUSMENU_MENUITEM (priv->volume_slider_menuitem),
- DBUSMENU_MENUITEM (priv->voip_input_menu_item));
- pm_establish_pulse_connection (sink);
- return sink;
-}
diff --git a/src/active-sink.h b/src/active-sink.h
deleted file mode 100644
index 57b3079..0000000
--- a/src/active-sink.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2010 Canonical Ltd.
- *
- * Authors:
- * Conor Curran <conor.curran@canonical.com>
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 3, as published
- * by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranties of
- * MERCHANTABILITY, SATISFACTORY QUALITY, 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 __ACTIVE_SINK_H__
-#define __ACTIVE_SINK_H__
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include "common-defs.h"
-#include "sound-service-dbus.h"
-
-#include <pulse/pulseaudio.h>
-
-G_BEGIN_DECLS
-
-#define ACTIVE_SINK_TYPE (active_sink_get_type ())
-#define ACTIVE_SINK(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ACTIVE_SINK_TYPE, ActiveSink))
-#define ACTIVE_SINK_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ACTIVE_SINK_TYPE, ActiveSinkClass))
-#define IS_ACTIVE_SINK(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ACTIVE_SINK_TYPE))
-#define IS_ACTIVE_SINK_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ACTIVE_SINK_TYPE))
-#define ACTIVE_SINK_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ACTIVE_SINK_TYPE, ActiveSinkClass))
-
-typedef struct _ActiveSink ActiveSink;
-typedef struct _ActiveSinkClass ActiveSinkClass;
-
-struct _ActiveSink {
- GObject parent;
-};
-
-struct _ActiveSinkClass {
- GObjectClass parent_class;
-};
-
-GType active_sink_get_type (void) G_GNUC_CONST;
-
-/**
- * TODO
- * Refactor this to become a device manager obj basically acting as wrapper for
- * the communication between pulseaudio-mgr and the individual items.
- * First steps collapse slider/volume related stuff into slider-menu-item.
- */
-
-// Sink related
-void active_sink_populate (ActiveSink* sink, const pa_sink_info* update);
-void active_sink_update (ActiveSink* sink, const pa_sink_info* update);
-gboolean active_sink_is_populated (ActiveSink* sink);
-gint active_sink_get_index (ActiveSink* self);
-void active_sink_deactivate (ActiveSink* self);
-void active_sink_update_mute (ActiveSink* self, gboolean mute_update);
-void active_sink_update_volume (ActiveSink* self, gdouble percent);
-void active_sink_ensure_sink_is_unmuted (ActiveSink* self);
-
-// source and sinkinput/client related for VOIP functionality
-void active_sink_update_voip_input_source (ActiveSink* sink, const pa_source_info* update);
-void active_sink_activate_voip_item (ActiveSink* sink, gint sink_input_index, gint client_index);
-gint active_sink_get_current_sink_input_index (ActiveSink* sink);
-gboolean active_sink_is_voip_source_populated (ActiveSink* sink);
-gint active_sink_get_source_index (ActiveSink* self);
-void active_sink_determine_blocking_state (ActiveSink* self);
-void active_sink_deactivate_voip_source (ActiveSink* self, gboolean visible);
-void active_sink_deactivate_voip_client (ActiveSink* self);
-SoundState active_sink_get_state (ActiveSink* self);
-
-ActiveSink* active_sink_new (SoundServiceDbus* service);
-
-G_END_DECLS
-
-#endif
diff --git a/src/common-defs.h b/src/common-defs.h
index da504de..68cb0b8 100644
--- a/src/common-defs.h
+++ b/src/common-defs.h
@@ -19,6 +19,9 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef __COMMON_DEFS_H__
#define __COMMON_DEFS_H__
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
typedef enum {
MUTED,
@@ -45,12 +48,13 @@ typedef enum {
TRANSPORT_STATE_PAUSED
}TransportState;
-#define NOT_ACTIVE -1
+#define NOT_ACTIVE -1
#define DBUSMENU_PROPERTY_EMPTY -1
/* DBUS Custom Items */
#define DBUSMENU_VOLUME_MENUITEM_TYPE "x-canonical-ido-volume-type"
#define DBUSMENU_VOLUME_MENUITEM_LEVEL "x-canonical-ido-volume-level"
+#define DBUSMENU_VOLUME_MENUITEM_MUTE "x-canonical-ido-volume-mute"
#define DBUSMENU_VOIP_INPUT_MENUITEM_TYPE "x-canonical-ido-voip-input-type"
#define DBUSMENU_VOIP_INPUT_MENUITEM_LEVEL "x-canonical-ido-voip-input-level"
diff --git a/src/device.c b/src/device.c
new file mode 100644
index 0000000..79b7b50
--- /dev/null
+++ b/src/device.c
@@ -0,0 +1,289 @@
+/*
+Copyright 2011 Canonical Ltd.
+
+Authors:
+ Conor Curran <conor.curran@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 3, as published
+by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY, 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 <libdbusmenu-glib/menuitem.h>
+
+#include "device.h"
+#include "slider-menu-item.h"
+#include "mute-menu-item.h"
+#include "voip-input-menu-item.h"
+#include "pulseaudio-mgr.h"
+
+typedef struct _DevicePrivate DevicePrivate;
+
+struct _DevicePrivate
+{
+ SliderMenuItem* volume_slider_menuitem;
+ MuteMenuItem* mute_menuitem;
+ VoipInputMenuItem* voip_input_menu_item;
+ SoundState current_sound_state;
+ SoundServiceDbus* service;
+};
+
+#define DEVICE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), DEVICE_TYPE, DevicePrivate))
+
+/* Prototypes */
+static void device_class_init (DeviceClass *klass);
+static void device_init (Device *self);
+static void device_dispose (GObject *object);
+static void device_finalize (GObject *object);
+
+static SoundState device_get_state_from_volume (Device* self);
+static void device_mute_update (Device* self, gboolean muted);
+
+G_DEFINE_TYPE (Device, device, G_TYPE_OBJECT);
+
+static void
+device_class_init (DeviceClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (DevicePrivate));
+
+ gobject_class->dispose = device_dispose;
+ gobject_class->finalize = device_finalize;
+}
+
+static void
+device_init (Device *self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ priv->mute_menuitem = NULL;
+ priv->volume_slider_menuitem = NULL;
+ priv->voip_input_menu_item = NULL;
+ priv->current_sound_state = UNAVAILABLE;
+ priv->service = NULL;
+
+ // Init our menu items.
+ priv->mute_menuitem = g_object_new (MUTE_MENU_ITEM_TYPE, NULL);
+ priv->voip_input_menu_item = g_object_new (VOIP_INPUT_MENU_ITEM_TYPE, NULL);;
+ priv->volume_slider_menuitem = slider_menu_item_new (self);
+ mute_menu_item_enable (priv->mute_menuitem, FALSE);
+ slider_menu_item_enable (priv->volume_slider_menuitem, FALSE);
+}
+
+static void
+device_dispose (GObject *object)
+{
+ G_OBJECT_CLASS (device_parent_class)->dispose (object);
+}
+
+static void
+device_finalize (GObject *object)
+{
+ G_OBJECT_CLASS (device_parent_class)->finalize (object);
+}
+
+void
+device_sink_populate (Device* self,
+ const pa_sink_info* update)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE(self);
+ mute_menu_item_enable (priv->mute_menuitem, TRUE);
+ slider_menu_item_populate (priv->volume_slider_menuitem, update);
+ SoundState state = device_get_state_from_volume (self);
+ if (priv->current_sound_state != state){
+ priv->current_sound_state = state;
+ sound_service_dbus_update_sound_state (priv->service,
+ priv->current_sound_state);
+ }
+ device_mute_update (self, update->mute);
+}
+
+void
+device_sink_update (Device* self,
+ const pa_sink_info* update)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ slider_menu_item_update (priv->volume_slider_menuitem, update);
+
+ SoundState state = device_get_state_from_volume (self);
+ if (priv->current_sound_state != state){
+ priv->current_sound_state = state;
+ sound_service_dbus_update_sound_state (priv->service,
+ priv->current_sound_state);
+ }
+
+ device_mute_update (self, update->mute);
+}
+
+gint
+device_get_current_sink_input_index (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ return voip_input_menu_item_get_sink_input_index (priv->voip_input_menu_item);
+}
+
+static void
+device_mute_update (Device* self, gboolean muted)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ mute_menu_item_update (priv->mute_menuitem, muted);
+ SoundState state = device_get_state_from_volume (self);
+
+ if (muted == TRUE){
+ state = MUTED;
+ }
+ // Only send signals if something has changed
+ if (priv->current_sound_state != state){
+ priv->current_sound_state = state;
+ sound_service_dbus_update_sound_state (priv->service, state);
+ }
+}
+
+void
+device_ensure_sink_is_unmuted (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ if (mute_menu_item_is_muted (priv->mute_menuitem)){
+ pm_update_mute (FALSE);
+ }
+}
+
+
+static SoundState
+device_get_state_from_volume (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ GVariant* v = dbusmenu_menuitem_property_get_variant (DBUSMENU_MENUITEM(priv->volume_slider_menuitem),
+ DBUSMENU_VOLUME_MENUITEM_LEVEL);
+ gdouble volume_percent = g_variant_get_double (v);
+
+ SoundState state = LOW_LEVEL;
+
+ if (volume_percent < 30.0 && volume_percent > 0) {
+ state = LOW_LEVEL;
+ }
+ else if (volume_percent < 70.0 && volume_percent >= 30.0) {
+ state = MEDIUM_LEVEL;
+ }
+ else if (volume_percent >= 70.0) {
+ state = HIGH_LEVEL;
+ }
+ else if (volume_percent == 0.0) {
+ state = ZERO_LEVEL;
+ }
+ return state;
+}
+
+void
+device_determine_blocking_state (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ if (mute_menu_item_is_muted (priv->mute_menuitem)){
+ /**
+ We don't want to set the current state to blocking
+ as this is a fire and forget event.
+ */
+ sound_service_dbus_update_sound_state (priv->service,
+ BLOCKED);
+ }
+}
+
+gint
+device_get_sink_index (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ return slider_menu_item_get_sink_index (priv->volume_slider_menuitem);
+}
+
+gboolean
+device_is_sink_populated (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ return dbusmenu_menuitem_property_get_bool (DBUSMENU_MENUITEM (priv->volume_slider_menuitem),
+ DBUSMENU_MENUITEM_PROP_ENABLED);
+}
+
+void
+device_activate_voip_item (Device* self, gint sink_input_index, gint client_index)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ if (voip_input_menu_item_is_interested (priv->voip_input_menu_item,
+ sink_input_index,
+ client_index)){
+ voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE);
+ }
+}
+
+void
+device_deactivate_voip_source (Device* self, gboolean visible)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ visible &= voip_input_menu_item_is_active (priv->voip_input_menu_item);
+ voip_input_menu_item_deactivate_source (priv->voip_input_menu_item, visible);
+}
+
+void
+device_deactivate_voip_client (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ voip_input_menu_item_deactivate_voip_client (priv->voip_input_menu_item);
+}
+
+void
+device_sink_deactivated (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ priv->current_sound_state = UNAVAILABLE;
+ sound_service_dbus_update_sound_state (priv->service,
+ priv->current_sound_state);
+ mute_menu_item_enable (priv->mute_menuitem, FALSE);
+ slider_menu_item_enable (priv->volume_slider_menuitem, FALSE);
+}
+
+SoundState
+device_get_state (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ return priv->current_sound_state;
+}
+
+void
+device_update_voip_input_source (Device* self, const pa_source_info* update)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ voip_input_menu_item_update (priv->voip_input_menu_item, update);
+}
+
+gboolean
+device_is_voip_source_populated (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ return voip_input_menu_item_is_populated (priv->voip_input_menu_item);
+}
+
+gint device_get_source_index (Device* self)
+{
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
+ return voip_input_menu_item_get_index (priv->voip_input_menu_item);
+}
+
+Device*
+device_new (SoundServiceDbus* service)
+{
+ Device* sink = g_object_new (DEVICE_TYPE, NULL);
+ DevicePrivate* priv = DEVICE_GET_PRIVATE (sink);
+ priv->service = service;
+ sound_service_dbus_build_sound_menu (service,
+ mute_menu_item_get_button (priv->mute_menuitem),
+ DBUSMENU_MENUITEM (priv->volume_slider_menuitem),
+ DBUSMENU_MENUITEM (priv->voip_input_menu_item));
+ pm_establish_pulse_connection (sink);
+ return sink;
+}
diff --git a/src/device.h b/src/device.h
new file mode 100644
index 0000000..9c74344
--- /dev/null
+++ b/src/device.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2010 Canonical Ltd.
+ *
+ * Authors:
+ * Conor Curran <conor.curran@canonical.com>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, 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 __DEVICE_H__
+#define __DEVICE_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include "common-defs.h"
+#include "sound-service-dbus.h"
+
+#include <pulse/pulseaudio.h>
+
+G_BEGIN_DECLS
+
+#define DEVICE_TYPE (device_get_type ())
+#define DEVICE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), DEVICE_TYPE, Device))
+#define DEVICE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), DEVICE_TYPE, DeviceClass))
+#define IS_DEVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), DEVICE_TYPE))
+#define IS_DEVICE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), DEVICE_TYPE))
+#define DEVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), DEVICE_TYPE, DeviceClass))
+
+typedef struct _Device Device;
+typedef struct _DeviceClass DeviceClass;
+
+struct _Device {
+ GObject parent;
+};
+
+struct _DeviceClass {
+ GObjectClass parent_class;
+};
+
+GType device_get_type (void) G_GNUC_CONST;
+
+/**
+ * TODO
+ * Refactor this to become a device manager obj basically acting as wrapper for
+ * the communication between pulseaudio-mgr and the individual items.
+ * First steps collapse slider/volume related stuff into slider-menu-item.
+ */
+
+// Sink related
+void device_sink_populate (Device* sink, const pa_sink_info* update);
+void device_sink_update (Device* sink, const pa_sink_info* update);
+gboolean device_is_sink_populated (Device* sink);
+gint device_get_sink_index (Device* self);
+void device_sink_deactivated (Device* self);
+void device_update_mute (Device* self, gboolean mute_update);
+void device_ensure_sink_is_unmuted (Device* self);
+
+// source and sinkinput/client related for VOIP functionality
+void device_update_voip_input_source (Device* sink, const pa_source_info* update);
+void device_activate_voip_item (Device* sink, gint sink_input_index, gint client_index);
+gint device_get_current_sink_input_index (Device* sink);
+gboolean device_is_voip_source_populated (Device* sink);
+gint device_get_source_index (Device* self);
+void device_determine_blocking_state (Device* self);
+void device_deactivate_voip_source (Device* self, gboolean visible);
+void device_deactivate_voip_client (Device* self);
+SoundState device_get_state (Device* self);
+
+Device* device_new (SoundServiceDbus* service);
+
+G_END_DECLS
+
+#endif
diff --git a/src/fetch-file.c b/src/fetch-file.c
index 47f0558..7fb8e14 100644
--- a/src/fetch-file.c
+++ b/src/fetch-file.c
@@ -1,4 +1,4 @@
-/* fetch-file.c generated by valac 0.11.6, the Vala compiler
+/* fetch-file.c generated by valac 0.11.7, the Vala compiler
* generated from fetch-file.vala, do not modify */
/*
@@ -73,7 +73,6 @@ struct _FetchFileFetchDataData {
GFileInputStream* _tmp1_;
GFileInputStream* _tmp2_;
GDataInputStream* _tmp3_;
- GDataInputStream* _tmp4_;
GError * e;
GError * _inner_error_;
};
@@ -193,9 +192,8 @@ static gboolean fetch_file_fetch_data_co (FetchFileFetchDataData* data) {
data->_tmp2_ = data->_tmp1_;
data->_tmp3_ = NULL;
data->_tmp3_ = g_data_input_stream_new ((GInputStream*) data->_tmp2_);
- data->_tmp4_ = data->_tmp3_;
_g_object_unref0 (data->self->priv->stream);
- data->self->priv->stream = data->_tmp4_;
+ data->self->priv->stream = data->_tmp3_;
_g_object_unref0 (data->_tmp2_);
g_data_input_stream_set_byte_order (data->self->priv->stream, G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN);
goto __finally14;
@@ -346,12 +344,10 @@ const gchar* fetch_file_get_uri (FetchFile* self) {
static void fetch_file_set_uri (FetchFile* self, const gchar* value) {
gchar* _tmp0_;
- gchar* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = g_strdup (value);
- _tmp1_ = _tmp0_;
_g_free0 (self->priv->_uri);
- self->priv->_uri = _tmp1_;
+ self->priv->_uri = _tmp0_;
g_object_notify ((GObject *) self, "uri");
}
@@ -366,12 +362,10 @@ const gchar* fetch_file_get_intended_property (FetchFile* self) {
static void fetch_file_set_intended_property (FetchFile* self, const gchar* value) {
gchar* _tmp0_;
- gchar* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = g_strdup (value);
- _tmp1_ = _tmp0_;
_g_free0 (self->priv->_intended_property);
- self->priv->_intended_property = _tmp1_;
+ self->priv->_intended_property = _tmp0_;
g_object_notify ((GObject *) self, "intended-property");
}
@@ -400,20 +394,16 @@ static GObject * fetch_file_constructor (GType type, guint n_construct_propertie
GObjectClass * parent_class;
FetchFile * self;
GFile* _tmp0_ = NULL;
- GFile* _tmp1_;
- GByteArray* _tmp2_ = NULL;
- GByteArray* _tmp3_;
+ GByteArray* _tmp1_ = NULL;
parent_class = G_OBJECT_CLASS (fetch_file_parent_class);
obj = parent_class->constructor (type, n_construct_properties, construct_properties);
self = FETCH_FILE (obj);
_tmp0_ = g_file_new_for_uri (self->priv->_uri);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->file);
- self->priv->file = _tmp1_;
- _tmp2_ = g_byte_array_new ();
- _tmp3_ = _tmp2_;
+ self->priv->file = _tmp0_;
+ _tmp1_ = g_byte_array_new ();
_g_byte_array_free0 (self->priv->data);
- self->priv->data = _tmp3_;
+ self->priv->data = _tmp1_;
return obj;
}
diff --git a/src/freedesktop-interfaces.c b/src/freedesktop-interfaces.c
index c91cdb9..b7c8474 100644
--- a/src/freedesktop-interfaces.c
+++ b/src/freedesktop-interfaces.c
@@ -1,4 +1,4 @@
-/* freedesktop-interfaces.c generated by valac 0.11.6, the Vala compiler
+/* freedesktop-interfaces.c generated by valac 0.11.7, the Vala compiler
* generated from freedesktop-interfaces.vala, do not modify */
/*
diff --git a/src/indicator-sound.c b/src/indicator-sound.c
index a7d3808..7d74a42 100644
--- a/src/indicator-sound.c
+++ b/src/indicator-sound.c
@@ -45,6 +45,7 @@ typedef struct _IndicatorSoundPrivate IndicatorSoundPrivate;
struct _IndicatorSoundPrivate
{
GtkWidget* volume_widget;
+ GtkWidget* voip_widget;
GList* transport_widgets_list;
GDBusProxy *dbus_proxy;
SoundStateManager* state_manager;
@@ -443,11 +444,16 @@ new_voip_slider_widget (DbusmenuMenuitem * newitem,
{
g_debug("indicator-sound: new_voip_slider_widget");
GtkWidget* voip_widget = NULL;
+ IndicatorObject *io = NULL;
g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE);
g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE);
+ io = g_object_get_data (G_OBJECT (client), "indicator");
+ IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io));
+
voip_widget = voip_input_widget_new (newitem);
+ priv->voip_widget = voip_widget;
GtkWidget* ido_slider_widget = voip_input_widget_get_ido_slider(VOIP_INPUT_WIDGET(voip_widget));
@@ -478,21 +484,35 @@ key_press_cb(GtkWidget* widget, GdkEventKey* event, gpointer data)
IndicatorSound *indicator = INDICATOR_SOUND (data);
IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(indicator);
- if(priv->volume_widget == NULL){
- return FALSE;
- }
-
- GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget));
- GtkWidget* slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)slider_widget);
- GtkRange* range = (GtkRange*)slider;
- g_return_val_if_fail(GTK_IS_RANGE(range), FALSE);
- gdouble current_value = gtk_range_get_value(range);
- gdouble new_value = current_value;
- const gdouble five_percent = 5;
GtkWidget *menuitem;
-
menuitem = GTK_MENU_SHELL (widget)->active_menu_item;
- if (IDO_IS_SCALE_MENU_ITEM(menuitem) == TRUE) {
+
+ if (IDO_IS_SCALE_MENU_ITEM(menuitem) == TRUE){
+ gdouble current_value = 0;
+ gdouble new_value = 0;
+ const gdouble five_percent = 5;
+ gboolean is_voip_slider = FALSE;
+
+ if (g_ascii_strcasecmp (ido_scale_menu_item_get_primary_label (IDO_SCALE_MENU_ITEM(menuitem)), "VOLUME") == 0) {
+ g_debug ("vOLUME SLIDER KEY PRESS");
+ GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget));
+ GtkWidget* slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)slider_widget);
+ GtkRange* range = (GtkRange*)slider;
+ g_return_val_if_fail(GTK_IS_RANGE(range), FALSE);
+ current_value = gtk_range_get_value(range);
+ new_value = current_value;
+ }
+ else if (g_ascii_strcasecmp (ido_scale_menu_item_get_primary_label (IDO_SCALE_MENU_ITEM(menuitem)), "VOIP") == 0) {
+ g_debug ("VOIP SLIDER KEY PRESS");
+ GtkWidget* slider_widget = voip_input_widget_get_ido_slider(VOIP_INPUT_WIDGET(priv->voip_widget));
+ GtkWidget* slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)slider_widget);
+ GtkRange* range = (GtkRange*)slider;
+ g_return_val_if_fail(GTK_IS_RANGE(range), FALSE);
+ current_value = gtk_range_get_value(range);
+ new_value = current_value;
+ is_voip_slider = TRUE;
+ }
+
switch (event->keyval) {
case GDK_Right:
digested = TRUE;
@@ -514,9 +534,13 @@ key_press_cb(GtkWidget* widget, GdkEventKey* event, gpointer data)
break;
}
new_value = CLAMP(new_value, 0, 100);
- if (new_value != current_value && sound_state_manager_get_current_state (priv->state_manager) != MUTED) {
- //g_debug("Attempting to set the range from the key listener to %f", new_value);
- volume_widget_update(VOLUME_WIDGET(priv->volume_widget), new_value);
+ if (new_value != current_value){
+ if (is_voip_slider == TRUE){
+ voip_input_widget_update (VOIP_INPUT_WIDGET(priv->voip_widget), new_value);
+ }
+ else{
+ volume_widget_update (VOLUME_WIDGET(priv->volume_widget), new_value);
+ }
}
}
else if (IS_TRANSPORT_WIDGET(menuitem) == TRUE) {
diff --git a/src/metadata-menu-item.c b/src/metadata-menu-item.c
index 08231ca..981b951 100644
--- a/src/metadata-menu-item.c
+++ b/src/metadata-menu-item.c
@@ -1,4 +1,4 @@
-/* metadata-menu-item.c generated by valac 0.11.6, the Vala compiler
+/* metadata-menu-item.c generated by valac 0.11.7, the Vala compiler
* generated from metadata-menu-item.vala, do not modify */
/*
@@ -337,8 +337,7 @@ void metadata_menuitem_fetch_art (MetadataMenuitem* self, const gchar* uri, cons
GFile* _tmp0_ = NULL;
GFile* art_file;
gboolean _tmp1_;
- FetchFile* _tmp8_ = NULL;
- FetchFile* _tmp9_;
+ FetchFile* _tmp7_ = NULL;
GError * _inner_error_ = NULL;
g_return_if_fail (self != NULL);
g_return_if_fail (uri != NULL);
@@ -353,11 +352,12 @@ void metadata_menuitem_fetch_art (MetadataMenuitem* self, const gchar* uri, cons
gchar* _tmp4_ = NULL;
gchar* _tmp5_;
gchar* _tmp6_;
- gchar* _tmp7_;
_tmp2_ = string_strip (uri);
_tmp3_ = _tmp2_;
_tmp4_ = g_filename_from_uri (_tmp3_, NULL, &_inner_error_);
- _tmp6_ = (_tmp5_ = _tmp4_, _g_free0 (_tmp3_), _tmp5_);
+ _tmp5_ = _tmp4_;
+ _g_free0 (_tmp3_);
+ _tmp6_ = _tmp5_;
if (_inner_error_ != NULL) {
if (_inner_error_->domain == G_CONVERT_ERROR) {
goto __catch4_g_convert_error;
@@ -368,9 +368,8 @@ void metadata_menuitem_fetch_art (MetadataMenuitem* self, const gchar* uri, cons
g_clear_error (&_inner_error_);
return;
}
- _tmp7_ = _tmp6_;
_g_free0 (path);
- path = _tmp7_;
+ path = _tmp6_;
dbusmenu_menuitem_property_set ((DbusmenuMenuitem*) self, prop, path);
goto __finally4;
__catch4_g_convert_error:
@@ -398,10 +397,9 @@ void metadata_menuitem_fetch_art (MetadataMenuitem* self, const gchar* uri, cons
_g_object_unref0 (art_file);
return;
}
- _tmp8_ = fetch_file_new (uri, prop);
- _tmp9_ = _tmp8_;
+ _tmp7_ = fetch_file_new (uri, prop);
_g_object_unref0 (metadata_menuitem_fetcher);
- metadata_menuitem_fetcher = _tmp9_;
+ metadata_menuitem_fetcher = _tmp7_;
g_signal_connect_object (metadata_menuitem_fetcher, "failed", (GCallback) __lambda0__fetch_file_failed, self, 0);
g_signal_connect_object (metadata_menuitem_fetcher, "completed", (GCallback) _metadata_menuitem_on_fetcher_completed_fetch_file_completed, self, 0);
fetch_file_fetch_data (metadata_menuitem_fetcher, NULL, NULL);
@@ -458,7 +456,6 @@ static void metadata_menuitem_on_fetcher_completed (MetadataMenuitem* self, GByt
GdkPixbufFormat* _tmp5_ = NULL;
const gchar* _tmp6_ = NULL;
gchar* _tmp7_;
- gchar* _tmp8_;
_tmp5_ = gdk_pixbuf_loader_get_format (loader);
_tmp6_ = gdk_pixbuf_format_get_name (_tmp5_);
gdk_pixbuf_save (icon, path, _tmp6_, &_inner_error_, NULL);
@@ -473,9 +470,8 @@ static void metadata_menuitem_on_fetcher_completed (MetadataMenuitem* self, GByt
g_remove (self->priv->previous_temp_album_art_path);
}
_tmp7_ = g_strdup (path);
- _tmp8_ = _tmp7_;
_g_free0 (self->priv->previous_temp_album_art_path);
- self->priv->previous_temp_album_art_path = _tmp8_;
+ self->priv->previous_temp_album_art_path = _tmp7_;
}
_g_free0 (path);
_g_object_unref0 (icon);
@@ -518,20 +514,16 @@ static GObject * metadata_menuitem_constructor (GType type, guint n_construct_pr
GObject * obj;
GObjectClass * parent_class;
MetadataMenuitem * self;
- gchar* _tmp0_;
- gchar* _tmp1_ = NULL;
- gchar* _tmp2_;
+ gchar* _tmp0_ = NULL;
parent_class = G_OBJECT_CLASS (metadata_menuitem_parent_class);
obj = parent_class->constructor (type, n_construct_properties, construct_properties);
self = METADATA_MENUITEM (obj);
metadata_menuitem_clean_album_art_temp_dir ();
- _tmp0_ = NULL;
_g_free0 (self->priv->previous_temp_album_art_path);
- self->priv->previous_temp_album_art_path = _tmp0_;
- _tmp1_ = metadata_menuitem_create_album_art_temp_dir ();
- _tmp2_ = _tmp1_;
+ self->priv->previous_temp_album_art_path = NULL;
+ _tmp0_ = metadata_menuitem_create_album_art_temp_dir ();
_g_free0 (metadata_menuitem_album_art_cache_dir);
- metadata_menuitem_album_art_cache_dir = _tmp2_;
+ metadata_menuitem_album_art_cache_dir = _tmp0_;
return obj;
}
diff --git a/src/mpris2-controller.c b/src/mpris2-controller.c
index 4a9b1ff..89ef02d 100644
--- a/src/mpris2-controller.c
+++ b/src/mpris2-controller.c
@@ -1,4 +1,4 @@
-/* mpris2-controller.c generated by valac 0.11.6, the Vala compiler
+/* mpris2-controller.c generated by valac 0.11.7, the Vala compiler
* generated from mpris2-controller.vala, do not modify */
/*
@@ -269,14 +269,12 @@ struct _Mpris2ControllerFetchPlaylistsData {
PlaylistDetails* _tmp2_;
gint _tmp2__length1;
gint __tmp2__size_;
- PlaylistDetails* _tmp3_;
GError * e;
- gpointer _tmp4_;
- PlayerItem* _tmp5_;
+ gpointer _tmp3_;
+ PlayerItem* _tmp4_;
PlaylistsMenuitem* playlists_item;
- gboolean _tmp6_;
- gboolean* _tmp7_;
- gboolean* _tmp8_;
+ gboolean _tmp5_;
+ gboolean* _tmp6_;
GError * _inner_error_;
};
@@ -496,7 +494,8 @@ void mpris2_controller_property_changed_cb (Mpris2Controller* self, const gchar*
_tmp5_ = mpris2_controller_determine_play_state (self, state);
p = (TransportState) _tmp5_;
_tmp6_ = gee_abstract_list_get ((GeeAbstractList*) self->priv->_owner->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_TRANSPORT);
- _tmp8_ = (_tmp7_ = (PlayerItem*) _tmp6_, IS_TRANSPORT_MENUITEM (_tmp7_) ? ((TransportMenuitem*) _tmp7_) : NULL);
+ _tmp7_ = (PlayerItem*) _tmp6_;
+ _tmp8_ = IS_TRANSPORT_MENUITEM (_tmp7_) ? ((TransportMenuitem*) _tmp7_) : NULL;
transport_menuitem_change_play_state (_tmp8_, p);
_g_object_unref0 (_tmp8_);
_g_free0 (state);
@@ -541,7 +540,8 @@ void mpris2_controller_property_changed_cb (Mpris2Controller* self, const gchar*
playlist_v = _tmp21_;
if (playlist_v != NULL) {
gboolean _tmp23_;
- _tmp22_ = _bool_equal (self->priv->_owner->use_playlists, (_tmp23_ = TRUE, &_tmp23_)) == TRUE;
+ _tmp23_ = TRUE;
+ _tmp22_ = _bool_equal (self->priv->_owner->use_playlists, &_tmp23_) == TRUE;
} else {
_tmp22_ = FALSE;
}
@@ -553,7 +553,8 @@ void mpris2_controller_property_changed_cb (Mpris2Controller* self, const gchar*
playlist_count_v = _tmp25_;
if (playlist_count_v != NULL) {
gboolean _tmp27_;
- _tmp26_ = _bool_equal (self->priv->_owner->use_playlists, (_tmp27_ = TRUE, &_tmp27_)) == TRUE;
+ _tmp27_ = TRUE;
+ _tmp26_ = _bool_equal (self->priv->_owner->use_playlists, &_tmp27_) == TRUE;
} else {
_tmp26_ = FALSE;
}
@@ -566,7 +567,8 @@ void mpris2_controller_property_changed_cb (Mpris2Controller* self, const gchar*
playlist_orderings_v = _tmp29_;
if (playlist_orderings_v != NULL) {
gboolean _tmp31_;
- _tmp30_ = _bool_equal (self->priv->_owner->use_playlists, (_tmp31_ = TRUE, &_tmp31_)) == TRUE;
+ _tmp31_ = TRUE;
+ _tmp30_ = _bool_equal (self->priv->_owner->use_playlists, &_tmp31_) == TRUE;
} else {
_tmp30_ = FALSE;
}
@@ -584,7 +586,8 @@ void mpris2_controller_property_changed_cb (Mpris2Controller* self, const gchar*
gchar* _tmp36_ = NULL;
gchar* _tmp37_;
_tmp34_ = gee_abstract_list_get ((GeeAbstractList*) self->priv->_owner->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_TITLE);
- title = (_tmp35_ = (PlayerItem*) _tmp34_, IS_TITLE_MENUITEM (_tmp35_) ? ((TitleMenuitem*) _tmp35_) : NULL);
+ _tmp35_ = (PlayerItem*) _tmp34_;
+ title = IS_TITLE_MENUITEM (_tmp35_) ? ((TitleMenuitem*) _tmp35_) : NULL;
_tmp36_ = mpris_root_get_Identity (self->priv->_mpris2_root);
_tmp37_ = _tmp36_;
title_menuitem_alter_label (title, _tmp37_);
@@ -614,9 +617,12 @@ static gboolean mpris2_controller_ensure_correct_playback_status (Mpris2Controll
_tmp0_ = mpris_player_get_PlaybackStatus (self->priv->_player);
_tmp1_ = _tmp0_;
_tmp2_ = mpris2_controller_determine_play_state (self, _tmp1_);
- p = (_tmp3_ = (TransportState) _tmp2_, _g_free0 (_tmp1_), _tmp3_);
+ _tmp3_ = (TransportState) _tmp2_;
+ _g_free0 (_tmp1_);
+ p = _tmp3_;
_tmp4_ = gee_abstract_list_get ((GeeAbstractList*) self->priv->_owner->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_TRANSPORT);
- _tmp6_ = (_tmp5_ = (PlayerItem*) _tmp4_, IS_TRANSPORT_MENUITEM (_tmp5_) ? ((TransportMenuitem*) _tmp5_) : NULL);
+ _tmp5_ = (PlayerItem*) _tmp4_;
+ _tmp6_ = IS_TRANSPORT_MENUITEM (_tmp5_) ? ((TransportMenuitem*) _tmp5_) : NULL;
transport_menuitem_change_play_state (_tmp6_, p);
_g_object_unref0 (_tmp6_);
result = FALSE;
@@ -651,7 +657,9 @@ static GHashTable* mpris2_controller_clean_metadata (Mpris2Controller* self) {
_tmp2_ = _tmp1_;
_tmp3_ = g_hash_table_lookup (_tmp2_, "xesam:artist");
_tmp4_ = _g_variant_ref0 ((GVariant*) _tmp3_);
- artist_v = (_tmp5_ = _tmp4_, _g_hash_table_unref0 (_tmp2_), _tmp5_);
+ _tmp5_ = _tmp4_;
+ _g_hash_table_unref0 (_tmp2_);
+ artist_v = _tmp5_;
if (artist_v != NULL) {
GHashTable* _tmp6_ = NULL;
GHashTable* _tmp7_;
@@ -662,48 +670,46 @@ static GHashTable* mpris2_controller_clean_metadata (Mpris2Controller* self) {
const gchar* _tmp11_ = NULL;
gchar* display_artists = NULL;
const gchar* _tmp12_ = NULL;
- gchar* _tmp20_;
- gconstpointer _tmp21_ = NULL;
+ gchar* _tmp18_;
+ gconstpointer _tmp19_ = NULL;
_tmp6_ = mpris_player_get_Metadata (self->priv->_player);
_tmp7_ = _tmp6_;
_tmp8_ = g_hash_table_lookup (_tmp7_, "xesam:artist");
_tmp9_ = _g_variant_ref0 ((GVariant*) _tmp8_);
- v_artists = (_tmp10_ = _tmp9_, _g_hash_table_unref0 (_tmp7_), _tmp10_);
+ _tmp10_ = _tmp9_;
+ _g_hash_table_unref0 (_tmp7_);
+ v_artists = _tmp10_;
_tmp11_ = g_variant_get_type_string (v_artists);
g_debug ("mpris2-controller.vala:130: artists is of type %s", _tmp11_);
_tmp12_ = g_variant_get_type_string (v_artists);
if (g_strcmp0 (_tmp12_, "s") == 0) {
const gchar* _tmp13_ = NULL;
gchar* _tmp14_;
- gchar* _tmp15_;
g_debug ("mpris2-controller.vala:133: SPOTIFY is that you ?");
_tmp13_ = g_variant_get_string (v_artists, NULL);
_tmp14_ = g_strdup (_tmp13_);
- _tmp15_ = _tmp14_;
_g_free0 (display_artists);
- display_artists = _tmp15_;
+ display_artists = _tmp14_;
} else {
- size_t _tmp16_;
- gchar** _tmp17_ = NULL;
+ size_t _tmp15_;
+ gchar** _tmp16_ = NULL;
gchar** artists;
gint artists_length1;
gint _artists_size_;
- gchar* _tmp18_ = NULL;
- gchar* _tmp19_;
- _tmp17_ = g_variant_dup_strv (v_artists, &_tmp16_);
- artists = _tmp17_;
- artists_length1 = _tmp16_;
- _artists_size_ = _tmp16_;
- _tmp18_ = g_strjoinv (", ", artists);
- _tmp19_ = _tmp18_;
+ gchar* _tmp17_ = NULL;
+ _tmp16_ = g_variant_dup_strv (v_artists, &_tmp15_);
+ artists = _tmp16_;
+ artists_length1 = _tmp15_;
+ _artists_size_ = _tmp15_;
+ _tmp17_ = g_strjoinv (", ", artists);
_g_free0 (display_artists);
- display_artists = _tmp19_;
+ display_artists = _tmp17_;
artists = (_vala_array_free (artists, artists_length1, (GDestroyNotify) g_free), NULL);
}
- _tmp20_ = g_strdup ("xesam:artist");
- g_hash_table_replace (changed_updates, _tmp20_, _variant_new1 (display_artists));
- _tmp21_ = g_hash_table_lookup (changed_updates, "xesam:artist");
- g_debug ("mpris2-controller.vala:141: artist : %s", _variant_get2 ((GVariant*) _tmp21_));
+ _tmp18_ = g_strdup ("xesam:artist");
+ g_hash_table_replace (changed_updates, _tmp18_, _variant_new1 (display_artists));
+ _tmp19_ = g_hash_table_lookup (changed_updates, "xesam:artist");
+ g_debug ("mpris2-controller.vala:141: artist : %s", _variant_get2 ((GVariant*) _tmp19_));
_g_free0 (display_artists);
_g_variant_unref0 (v_artists);
}
@@ -752,7 +758,9 @@ void mpris2_controller_initial_update (Mpris2Controller* self) {
g_return_if_fail (self != NULL);
_tmp0_ = mpris_player_get_PlaybackStatus (self->priv->_player);
_tmp1_ = _tmp0_;
- if ((_tmp2_ = _tmp1_ == NULL, _g_free0 (_tmp1_), _tmp2_)) {
+ _tmp2_ = _tmp1_ == NULL;
+ _g_free0 (_tmp1_);
+ if (_tmp2_) {
update = TRANSPORT_STATE_PAUSED;
} else {
gchar* _tmp3_ = NULL;
@@ -766,14 +774,17 @@ void mpris2_controller_initial_update (Mpris2Controller* self) {
}
_tmp6_ = mpris_root_get_Identity (self->priv->_mpris2_root);
_tmp7_ = _tmp6_;
- if ((_tmp8_ = _tmp7_ != NULL, _g_free0 (_tmp7_), _tmp8_)) {
+ _tmp8_ = _tmp7_ != NULL;
+ _g_free0 (_tmp7_);
+ if (_tmp8_) {
gpointer _tmp9_ = NULL;
PlayerItem* _tmp10_;
TitleMenuitem* title;
gchar* _tmp11_ = NULL;
gchar* _tmp12_;
_tmp9_ = gee_abstract_list_get ((GeeAbstractList*) self->priv->_owner->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_TITLE);
- title = (_tmp10_ = (PlayerItem*) _tmp9_, IS_TITLE_MENUITEM (_tmp10_) ? ((TitleMenuitem*) _tmp10_) : NULL);
+ _tmp10_ = (PlayerItem*) _tmp9_;
+ title = IS_TITLE_MENUITEM (_tmp10_) ? ((TitleMenuitem*) _tmp10_) : NULL;
_tmp11_ = mpris_root_get_Identity (self->priv->_mpris2_root);
_tmp12_ = _tmp11_;
title_menuitem_alter_label (title, _tmp12_);
@@ -781,7 +792,8 @@ void mpris2_controller_initial_update (Mpris2Controller* self) {
_g_object_unref0 (title);
}
_tmp13_ = gee_abstract_list_get ((GeeAbstractList*) self->priv->_owner->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_TRANSPORT);
- _tmp15_ = (_tmp14_ = (PlayerItem*) _tmp13_, IS_TRANSPORT_MENUITEM (_tmp14_) ? ((TransportMenuitem*) _tmp14_) : NULL);
+ _tmp14_ = (PlayerItem*) _tmp13_;
+ _tmp15_ = IS_TRANSPORT_MENUITEM (_tmp14_) ? ((TransportMenuitem*) _tmp14_) : NULL;
transport_menuitem_change_play_state (_tmp15_, update);
_g_object_unref0 (_tmp15_);
_tmp16_ = mpris2_controller_clean_metadata (self);
@@ -793,7 +805,8 @@ void mpris2_controller_initial_update (Mpris2Controller* self) {
player_item_update (_tmp18_, cleaned_metadata, _tmp20_);
_g_object_unref0 (_tmp20_);
_g_object_unref0 (_tmp18_);
- if (_bool_equal (self->priv->_owner->use_playlists, (_tmp21_ = TRUE, &_tmp21_)) == TRUE) {
+ _tmp21_ = TRUE;
+ if (_bool_equal (self->priv->_owner->use_playlists, &_tmp21_) == TRUE) {
mpris2_controller_fetch_playlists (self, NULL, NULL);
mpris2_controller_fetch_active_playlist (self);
}
@@ -855,7 +868,8 @@ static void mpris2_controller_on_playlistdetails_changed (Mpris2Controller* self
PlaylistsMenuitem* playlists_item;
g_return_if_fail (self != NULL);
_tmp0_ = gee_abstract_list_get ((GeeAbstractList*) self->priv->_owner->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_PLAYLISTS);
- playlists_item = (_tmp1_ = (PlayerItem*) _tmp0_, IS_PLAYLISTS_MENUITEM (_tmp1_) ? ((PlaylistsMenuitem*) _tmp1_) : NULL);
+ _tmp1_ = (PlayerItem*) _tmp0_;
+ playlists_item = IS_PLAYLISTS_MENUITEM (_tmp1_) ? ((PlaylistsMenuitem*) _tmp1_) : NULL;
playlists_menuitem_update_individual_playlist (playlists_item, details);
_g_object_unref0 (playlists_item);
}
@@ -954,11 +968,10 @@ static gboolean mpris2_controller_fetch_playlists_co (Mpris2ControllerFetchPlayl
g_clear_error (&data->_inner_error_);
return FALSE;
}
- data->_tmp3_ = data->_tmp2_;
data->current_playlists = (_vala_PlaylistDetails_array_free (data->current_playlists, data->current_playlists_length1), NULL);
+ data->current_playlists = data->_tmp2_;
data->current_playlists_length1 = data->_tmp2__length1;
- data->_current_playlists_size_ = data->current_playlists_length1;
- data->current_playlists = data->_tmp3_;
+ data->_current_playlists_size_ = data->__tmp2__size_;
goto __finally11;
__catch11_g_io_error:
{
@@ -984,18 +997,19 @@ static gboolean mpris2_controller_fetch_playlists_co (Mpris2ControllerFetchPlayl
}
if (data->current_playlists != NULL) {
g_debug ("mpris2-controller.vala:234: Size of the playlist array = %i", data->current_playlists_length1);
- data->_tmp4_ = NULL;
- data->_tmp4_ = gee_abstract_list_get ((GeeAbstractList*) data->self->priv->_owner->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_PLAYLISTS);
- data->playlists_item = (data->_tmp5_ = (PlayerItem*) data->_tmp4_, IS_PLAYLISTS_MENUITEM (data->_tmp5_) ? ((PlaylistsMenuitem*) data->_tmp5_) : NULL);
+ data->_tmp3_ = NULL;
+ data->_tmp3_ = gee_abstract_list_get ((GeeAbstractList*) data->self->priv->_owner->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_PLAYLISTS);
+ data->_tmp4_ = (PlayerItem*) data->_tmp3_;
+ data->playlists_item = IS_PLAYLISTS_MENUITEM (data->_tmp4_) ? ((PlaylistsMenuitem*) data->_tmp4_) : NULL;
playlists_menuitem_update (data->playlists_item, data->current_playlists, data->current_playlists_length1);
_g_object_unref0 (data->playlists_item);
} else {
g_warning ("mpris2-controller.vala:239: Playlists are on but its returning no cur" \
"rent_playlists");
- data->_tmp7_ = __bool_dup0 ((data->_tmp6_ = FALSE, &data->_tmp6_));
- data->_tmp8_ = data->_tmp7_;
+ data->_tmp5_ = FALSE;
+ data->_tmp6_ = __bool_dup0 (&data->_tmp5_);
_g_free0 (data->self->priv->_owner->use_playlists);
- data->self->priv->_owner->use_playlists = data->_tmp8_;
+ data->self->priv->_owner->use_playlists = data->_tmp6_;
}
data->current_playlists = (_vala_PlaylistDetails_array_free (data->current_playlists, data->current_playlists_length1), NULL);
if (data->_state_ == 0) {
@@ -1021,11 +1035,14 @@ static gboolean mpris2_controller_fetch_active_playlist (Mpris2Controller* self)
g_return_val_if_fail (self != NULL, FALSE);
mpris_playlists_get_ActivePlaylist (self->priv->_playlists, &_tmp0_);
_tmp1_ = _tmp0_;
- if ((_tmp2_ = _tmp1_.valid == FALSE, active_playlist_container_destroy (&_tmp1_), _tmp2_)) {
+ _tmp2_ = _tmp1_.valid == FALSE;
+ active_playlist_container_destroy (&_tmp1_);
+ if (_tmp2_) {
g_debug ("mpris2-controller.vala:247: We don't have an active playlist");
}
_tmp3_ = gee_abstract_list_get ((GeeAbstractList*) self->priv->_owner->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_PLAYLISTS);
- playlists_item = (_tmp4_ = (PlayerItem*) _tmp3_, IS_PLAYLISTS_MENUITEM (_tmp4_) ? ((PlaylistsMenuitem*) _tmp4_) : NULL);
+ _tmp4_ = (PlayerItem*) _tmp3_;
+ playlists_item = IS_PLAYLISTS_MENUITEM (_tmp4_) ? ((PlaylistsMenuitem*) _tmp4_) : NULL;
mpris_playlists_get_ActivePlaylist (self->priv->_playlists, &_tmp5_);
_tmp6_ = _tmp5_;
playlists_menuitem_active_playlist_update (playlists_item, &_tmp6_.details);
@@ -1069,12 +1086,10 @@ MprisRoot* mpris2_controller_get_mpris2_root (Mpris2Controller* self) {
static void mpris2_controller_set_mpris2_root (Mpris2Controller* self, MprisRoot* value) {
MprisRoot* _tmp0_;
- MprisRoot* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = _g_object_ref0 (value);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->_mpris2_root);
- self->priv->_mpris2_root = _tmp1_;
+ self->priv->_mpris2_root = _tmp0_;
g_object_notify ((GObject *) self, "mpris2-root");
}
@@ -1089,12 +1104,10 @@ MprisPlayer* mpris2_controller_get_player (Mpris2Controller* self) {
static void mpris2_controller_set_player (Mpris2Controller* self, MprisPlayer* value) {
MprisPlayer* _tmp0_;
- MprisPlayer* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = _g_object_ref0 (value);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->_player);
- self->priv->_player = _tmp1_;
+ self->priv->_player = _tmp0_;
g_object_notify ((GObject *) self, "player");
}
@@ -1109,12 +1122,10 @@ MprisPlaylists* mpris2_controller_get_playlists (Mpris2Controller* self) {
static void mpris2_controller_set_playlists (Mpris2Controller* self, MprisPlaylists* value) {
MprisPlaylists* _tmp0_;
- MprisPlaylists* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = _g_object_ref0 (value);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->_playlists);
- self->priv->_playlists = _tmp1_;
+ self->priv->_playlists = _tmp0_;
g_object_notify ((GObject *) self, "playlists");
}
@@ -1129,12 +1140,10 @@ FreeDesktopProperties* mpris2_controller_get_properties_interface (Mpris2Control
static void mpris2_controller_set_properties_interface (Mpris2Controller* self, FreeDesktopProperties* value) {
FreeDesktopProperties* _tmp0_;
- FreeDesktopProperties* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = _g_object_ref0 (value);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->_properties_interface);
- self->priv->_properties_interface = _tmp1_;
+ self->priv->_properties_interface = _tmp0_;
g_object_notify ((GObject *) self, "properties-interface");
}
@@ -1149,12 +1158,10 @@ PlayerController* mpris2_controller_get_owner (Mpris2Controller* self) {
static void mpris2_controller_set_owner (Mpris2Controller* self, PlayerController* value) {
PlayerController* _tmp0_;
- PlayerController* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = _g_object_ref0 (value);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->_owner);
- self->priv->_owner = _tmp1_;
+ self->priv->_owner = _tmp0_;
g_object_notify ((GObject *) self, "owner");
}
@@ -1174,27 +1181,24 @@ static GObject * mpris2_controller_constructor (GType type, guint n_construct_pr
GObjectClass * parent_class;
Mpris2Controller * self;
const gchar* _tmp0_ = NULL;
- const gchar* _tmp1_ = NULL;
- MprisRoot* _tmp2_ = NULL;
+ MprisRoot* _tmp1_ = NULL;
+ MprisRoot* _tmp2_;
MprisRoot* _tmp3_;
- MprisRoot* _tmp4_;
- const gchar* _tmp5_ = NULL;
- const gchar* _tmp6_ = NULL;
- MprisPlayer* _tmp7_ = NULL;
- MprisPlayer* _tmp8_;
- MprisPlayer* _tmp9_;
- gboolean _tmp10_;
- FreeDesktopProperties* _tmp16_ = NULL;
- FreeDesktopProperties* _tmp17_;
- FreeDesktopProperties* _tmp18_;
+ const gchar* _tmp4_ = NULL;
+ MprisPlayer* _tmp5_ = NULL;
+ MprisPlayer* _tmp6_;
+ MprisPlayer* _tmp7_;
+ gboolean _tmp8_;
+ FreeDesktopProperties* _tmp13_ = NULL;
+ FreeDesktopProperties* _tmp14_;
+ FreeDesktopProperties* _tmp15_;
GError * _inner_error_ = NULL;
parent_class = G_OBJECT_CLASS (mpris2_controller_parent_class);
obj = parent_class->constructor (type, n_construct_properties, construct_properties);
self = MPRIS2_CONTROLLER (obj);
_tmp0_ = player_controller_get_dbus_name (self->priv->_owner);
- _tmp1_ = player_controller_get_dbus_name (self->priv->_owner);
- _tmp2_ = g_initable_new (TYPE_MPRIS_ROOT_PROXY, NULL, &_inner_error_, "g-flags", 0, "g-name", _tmp1_, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", "/org/mpris/MediaPlayer2", "g-interface-name", "org.mpris.MediaPlayer2", NULL);
- _tmp3_ = (MprisRoot*) _tmp2_;
+ _tmp1_ = g_initable_new (TYPE_MPRIS_ROOT_PROXY, NULL, &_inner_error_, "g-flags", 0, "g-name", _tmp0_, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", "/org/mpris/MediaPlayer2", "g-interface-name", "org.mpris.MediaPlayer2", NULL);
+ _tmp2_ = (MprisRoot*) _tmp1_;
if (_inner_error_ != NULL) {
if (_inner_error_->domain == G_IO_ERROR) {
goto __catch13_g_io_error;
@@ -1202,13 +1206,12 @@ static GObject * mpris2_controller_constructor (GType type, guint n_construct_pr
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
g_clear_error (&_inner_error_);
}
- _tmp4_ = _tmp3_;
- mpris2_controller_set_mpris2_root (self, _tmp4_);
- _g_object_unref0 (_tmp4_);
- _tmp5_ = player_controller_get_dbus_name (self->priv->_owner);
- _tmp6_ = player_controller_get_dbus_name (self->priv->_owner);
- _tmp7_ = g_initable_new (TYPE_MPRIS_PLAYER_PROXY, NULL, &_inner_error_, "g-flags", 0, "g-name", _tmp6_, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", "/org/mpris/MediaPlayer2", "g-interface-name", "org.mpris.MediaPlayer2.Player", NULL);
- _tmp8_ = (MprisPlayer*) _tmp7_;
+ _tmp3_ = _tmp2_;
+ mpris2_controller_set_mpris2_root (self, _tmp3_);
+ _g_object_unref0 (_tmp3_);
+ _tmp4_ = player_controller_get_dbus_name (self->priv->_owner);
+ _tmp5_ = g_initable_new (TYPE_MPRIS_PLAYER_PROXY, NULL, &_inner_error_, "g-flags", 0, "g-name", _tmp4_, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", "/org/mpris/MediaPlayer2", "g-interface-name", "org.mpris.MediaPlayer2.Player", NULL);
+ _tmp6_ = (MprisPlayer*) _tmp5_;
if (_inner_error_ != NULL) {
if (_inner_error_->domain == G_IO_ERROR) {
goto __catch13_g_io_error;
@@ -1216,19 +1219,18 @@ static GObject * mpris2_controller_constructor (GType type, guint n_construct_pr
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
g_clear_error (&_inner_error_);
}
- _tmp9_ = _tmp8_;
- mpris2_controller_set_player (self, _tmp9_);
- _g_object_unref0 (_tmp9_);
- if (_bool_equal (self->priv->_owner->use_playlists, (_tmp10_ = TRUE, &_tmp10_)) == TRUE) {
- const gchar* _tmp11_ = NULL;
- const gchar* _tmp12_ = NULL;
- MprisPlaylists* _tmp13_ = NULL;
- MprisPlaylists* _tmp14_;
- MprisPlaylists* _tmp15_;
- _tmp11_ = player_controller_get_dbus_name (self->priv->_owner);
- _tmp12_ = player_controller_get_dbus_name (self->priv->_owner);
- _tmp13_ = g_initable_new (TYPE_MPRIS_PLAYLISTS_PROXY, NULL, &_inner_error_, "g-flags", 0, "g-name", _tmp12_, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", "/org/mpris/MediaPlayer2", "g-interface-name", "org.mpris.MediaPlayer2.Playlists", NULL);
- _tmp14_ = (MprisPlaylists*) _tmp13_;
+ _tmp7_ = _tmp6_;
+ mpris2_controller_set_player (self, _tmp7_);
+ _g_object_unref0 (_tmp7_);
+ _tmp8_ = TRUE;
+ if (_bool_equal (self->priv->_owner->use_playlists, &_tmp8_) == TRUE) {
+ const gchar* _tmp9_ = NULL;
+ MprisPlaylists* _tmp10_ = NULL;
+ MprisPlaylists* _tmp11_;
+ MprisPlaylists* _tmp12_;
+ _tmp9_ = player_controller_get_dbus_name (self->priv->_owner);
+ _tmp10_ = g_initable_new (TYPE_MPRIS_PLAYLISTS_PROXY, NULL, &_inner_error_, "g-flags", 0, "g-name", _tmp9_, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", "/org/mpris/MediaPlayer2", "g-interface-name", "org.mpris.MediaPlayer2.Playlists", NULL);
+ _tmp11_ = (MprisPlaylists*) _tmp10_;
if (_inner_error_ != NULL) {
if (_inner_error_->domain == G_IO_ERROR) {
goto __catch13_g_io_error;
@@ -1236,13 +1238,13 @@ static GObject * mpris2_controller_constructor (GType type, guint n_construct_pr
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
g_clear_error (&_inner_error_);
}
- _tmp15_ = _tmp14_;
- mpris2_controller_set_playlists (self, _tmp15_);
- _g_object_unref0 (_tmp15_);
+ _tmp12_ = _tmp11_;
+ mpris2_controller_set_playlists (self, _tmp12_);
+ _g_object_unref0 (_tmp12_);
g_signal_connect_object (self->priv->_playlists, "playlist-changed", (GCallback) _mpris2_controller_on_playlistdetails_changed_mpris_playlists_playlist_changed, self, 0);
}
- _tmp16_ = g_initable_new (TYPE_FREE_DESKTOP_PROPERTIES_PROXY, NULL, &_inner_error_, "g-flags", 0, "g-name", "org.freedesktop.Properties.PropertiesChanged", "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", "/org/mpris/MediaPlayer2", "g-interface-name", "org.freedesktop.DBus.Properties", NULL);
- _tmp17_ = (FreeDesktopProperties*) _tmp16_;
+ _tmp13_ = g_initable_new (TYPE_FREE_DESKTOP_PROPERTIES_PROXY, NULL, &_inner_error_, "g-flags", 0, "g-name", "org.freedesktop.Properties.PropertiesChanged", "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", "/org/mpris/MediaPlayer2", "g-interface-name", "org.freedesktop.DBus.Properties", NULL);
+ _tmp14_ = (FreeDesktopProperties*) _tmp13_;
if (_inner_error_ != NULL) {
if (_inner_error_->domain == G_IO_ERROR) {
goto __catch13_g_io_error;
@@ -1250,9 +1252,9 @@ static GObject * mpris2_controller_constructor (GType type, guint n_construct_pr
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
g_clear_error (&_inner_error_);
}
- _tmp18_ = _tmp17_;
- mpris2_controller_set_properties_interface (self, _tmp18_);
- _g_object_unref0 (_tmp18_);
+ _tmp15_ = _tmp14_;
+ mpris2_controller_set_properties_interface (self, _tmp15_);
+ _g_object_unref0 (_tmp15_);
g_signal_connect_object (self->priv->_properties_interface, "properties-changed", (GCallback) _mpris2_controller_property_changed_cb_free_desktop_properties_properties_changed, self, 0);
goto __finally13;
__catch13_g_io_error:
diff --git a/src/mpris2-interfaces.c b/src/mpris2-interfaces.c
index 2a73d2e..f12429f 100644
--- a/src/mpris2-interfaces.c
+++ b/src/mpris2-interfaces.c
@@ -1,4 +1,4 @@
-/* mpris2-interfaces.c generated by valac 0.11.6, the Vala compiler
+/* mpris2-interfaces.c generated by valac 0.11.7, the Vala compiler
* generated from mpris2-interfaces.vala, do not modify */
/*
@@ -1722,9 +1722,9 @@ void playlist_details_copy (const PlaylistDetails* self, PlaylistDetails* dest)
void playlist_details_destroy (PlaylistDetails* self) {
- _g_free0 (self->path);
- _g_free0 (self->name);
- _g_free0 (self->icon_path);
+ _g_free0 ((*self).path);
+ _g_free0 ((*self).name);
+ _g_free0 ((*self).icon_path);
}
@@ -1756,12 +1756,13 @@ GType playlist_details_get_type (void) {
void active_playlist_container_copy (const ActivePlaylistContainer* self, ActivePlaylistContainer* dest) {
PlaylistDetails _tmp0_ = {0};
dest->valid = self->valid;
- dest->details = (playlist_details_copy (&self->details, &_tmp0_), _tmp0_);
+ playlist_details_copy (&self->details, &_tmp0_);
+ dest->details = _tmp0_;
}
void active_playlist_container_destroy (ActivePlaylistContainer* self) {
- playlist_details_destroy (&self->details);
+ playlist_details_destroy (&(*self).details);
}
diff --git a/src/mpris2-watcher.c b/src/mpris2-watcher.c
index f93a528..f22c63c 100644
--- a/src/mpris2-watcher.c
+++ b/src/mpris2-watcher.c
@@ -1,4 +1,4 @@
-/* mpris2-watcher.c generated by valac 0.11.6, the Vala compiler
+/* mpris2-watcher.c generated by valac 0.11.7, the Vala compiler
* generated from mpris2-watcher.vala, do not modify */
/*
@@ -125,20 +125,19 @@ struct _Mpris2WatcherCheckForActiveClientsData {
gchar** _tmp2_;
gint _tmp2__length1;
gint __tmp2__size_;
- gchar** _tmp3_;
GError * e;
gchar** address_collection;
int address_collection_length1;
int address_it;
- gchar* _tmp4_;
+ gchar* _tmp3_;
gchar* address;
- gboolean _tmp5_;
- MprisRoot* _tmp6_;
+ gboolean _tmp4_;
+ MprisRoot* _tmp5_;
MprisRoot* mpris2_root;
- gboolean _tmp7_;
+ gboolean _tmp6_;
gboolean use_playlists;
+ gchar* _tmp7_;
gchar* _tmp8_;
- gchar* _tmp9_;
GError * _inner_error_;
};
@@ -271,11 +270,10 @@ static gboolean mpris2_watcher_check_for_active_clients_co (Mpris2WatcherCheckFo
g_clear_error (&data->_inner_error_);
return FALSE;
}
- data->_tmp3_ = data->_tmp2_;
data->interfaces = (_vala_array_free (data->interfaces, data->interfaces_length1, (GDestroyNotify) g_free), NULL);
+ data->interfaces = data->_tmp2_;
data->interfaces_length1 = data->_tmp2__length1;
- data->_interfaces_size_ = data->interfaces_length1;
- data->interfaces = data->_tmp3_;
+ data->_interfaces_size_ = data->__tmp2__size_;
goto __finally7;
__catch7_g_io_error:
{
@@ -304,14 +302,14 @@ static gboolean mpris2_watcher_check_for_active_clients_co (Mpris2WatcherCheckFo
data->address_collection = data->interfaces;
data->address_collection_length1 = data->interfaces_length1;
for (data->address_it = 0; data->address_it < data->interfaces_length1; data->address_it = data->address_it + 1) {
- data->_tmp4_ = g_strdup (data->address_collection[data->address_it]);
- data->address = data->_tmp4_;
+ data->_tmp3_ = g_strdup (data->address_collection[data->address_it]);
+ data->address = data->_tmp3_;
{
- data->_tmp5_ = g_str_has_prefix (data->address, MPRIS_PREFIX);
- if (data->_tmp5_) {
- data->_tmp6_ = NULL;
- data->_tmp6_ = mpris2_watcher_create_mpris_root (data->self, data->address);
- data->mpris2_root = data->_tmp6_;
+ data->_tmp4_ = g_str_has_prefix (data->address, MPRIS_PREFIX);
+ if (data->_tmp4_) {
+ data->_tmp5_ = NULL;
+ data->_tmp5_ = mpris2_watcher_create_mpris_root (data->self, data->address);
+ data->mpris2_root = data->_tmp5_;
if (data->mpris2_root == NULL) {
_g_object_unref0 (data->mpris2_root);
_g_free0 (data->address);
@@ -324,13 +322,13 @@ static gboolean mpris2_watcher_check_for_active_clients_co (Mpris2WatcherCheckFo
g_object_unref (data->_async_result);
return FALSE;
}
- data->_tmp7_ = mpris2_watcher_supports_playlists (data->self, data->address);
- data->use_playlists = data->_tmp7_;
- data->_tmp8_ = NULL;
- data->_tmp8_ = mpris_root_get_DesktopEntry (data->mpris2_root);
- data->_tmp9_ = data->_tmp8_;
- g_signal_emit_by_name (data->self, "client-appeared", data->_tmp9_, data->address, data->use_playlists);
- _g_free0 (data->_tmp9_);
+ data->_tmp6_ = mpris2_watcher_supports_playlists (data->self, data->address);
+ data->use_playlists = data->_tmp6_;
+ data->_tmp7_ = NULL;
+ data->_tmp7_ = mpris_root_get_DesktopEntry (data->mpris2_root);
+ data->_tmp8_ = data->_tmp7_;
+ g_signal_emit_by_name (data->self, "client-appeared", data->_tmp8_, data->address, data->use_playlists);
+ _g_free0 (data->_tmp8_);
_g_object_unref0 (data->mpris2_root);
}
_g_free0 (data->address);
@@ -408,7 +406,6 @@ static MprisRoot* mpris2_watcher_create_mpris_root (Mpris2Watcher* self, const g
if (_tmp0_) {
MprisRoot* _tmp1_ = NULL;
MprisRoot* _tmp2_;
- MprisRoot* _tmp3_;
_tmp1_ = g_initable_new (TYPE_MPRIS_ROOT_PROXY, NULL, &_inner_error_, "g-flags", 0, "g-name", name, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", MPRIS_MEDIA_PLAYER_PATH, "g-interface-name", "org.mpris.MediaPlayer2", NULL);
_tmp2_ = (MprisRoot*) _tmp1_;
if (_inner_error_ != NULL) {
@@ -420,9 +417,8 @@ static MprisRoot* mpris2_watcher_create_mpris_root (Mpris2Watcher* self, const g
g_clear_error (&_inner_error_);
return NULL;
}
- _tmp3_ = _tmp2_;
_g_object_unref0 (mpris2_root);
- mpris2_root = _tmp3_;
+ mpris2_root = _tmp2_;
goto __finally8;
__catch8_g_io_error:
{
@@ -451,10 +447,9 @@ static gboolean mpris2_watcher_supports_playlists (Mpris2Watcher* self, const gc
FreeDesktopIntrospectable* introspectable = NULL;
FreeDesktopIntrospectable* _tmp0_ = NULL;
FreeDesktopIntrospectable* _tmp1_;
- FreeDesktopIntrospectable* _tmp2_;
- gchar* _tmp3_ = NULL;
+ gchar* _tmp2_ = NULL;
gchar* results;
- gboolean _tmp4_;
+ gboolean _tmp3_;
GError * _inner_error_ = NULL;
g_return_val_if_fail (self != NULL, FALSE);
g_return_val_if_fail (name != NULL, FALSE);
@@ -469,11 +464,10 @@ static gboolean mpris2_watcher_supports_playlists (Mpris2Watcher* self, const gc
g_clear_error (&_inner_error_);
return FALSE;
}
- _tmp2_ = _tmp1_;
_g_object_unref0 (introspectable);
- introspectable = _tmp2_;
- _tmp3_ = free_desktop_introspectable_Introspect (introspectable, &_inner_error_);
- results = _tmp3_;
+ introspectable = _tmp1_;
+ _tmp2_ = free_desktop_introspectable_Introspect (introspectable, &_inner_error_);
+ results = _tmp2_;
if (_inner_error_ != NULL) {
if (_inner_error_->domain == G_IO_ERROR) {
goto __catch9_g_io_error;
@@ -483,8 +477,8 @@ static gboolean mpris2_watcher_supports_playlists (Mpris2Watcher* self, const gc
g_clear_error (&_inner_error_);
return FALSE;
}
- _tmp4_ = mpris2_watcher_parse_interfaces (self, results);
- result = _tmp4_;
+ _tmp3_ = mpris2_watcher_parse_interfaces (self, results);
+ result = _tmp3_;
_g_free0 (results);
_g_object_unref0 (introspectable);
return result;
@@ -567,7 +561,9 @@ static gboolean mpris2_watcher_parse_interfaces (Mpris2Watcher* self, const gcha
g_debug ("mpris2-watcher.vala:163: this dbus object has interface %s ", interface_name);
_tmp4_ = g_strconcat (MPRIS_PREFIX, "Playlists", NULL);
_tmp5_ = _tmp4_;
- if ((_tmp6_ = g_strcmp0 (interface_name, _tmp5_) == 0, _g_free0 (_tmp5_), _tmp6_)) {
+ _tmp6_ = g_strcmp0 (interface_name, _tmp5_) == 0;
+ _g_free0 (_tmp5_);
+ if (_tmp6_) {
_result_ = TRUE;
}
_g_free0 (interface_name);
@@ -610,7 +606,6 @@ static GObject * mpris2_watcher_constructor (GType type, guint n_construct_prope
Mpris2Watcher * self;
FreeDesktopObject* _tmp0_ = NULL;
FreeDesktopObject* _tmp1_;
- FreeDesktopObject* _tmp2_;
GError * _inner_error_ = NULL;
parent_class = G_OBJECT_CLASS (mpris2_watcher_parent_class);
obj = parent_class->constructor (type, n_construct_properties, construct_properties);
@@ -624,9 +619,8 @@ static GObject * mpris2_watcher_constructor (GType type, guint n_construct_prope
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
g_clear_error (&_inner_error_);
}
- _tmp2_ = _tmp1_;
_g_object_unref0 (self->priv->fdesktop_obj);
- self->priv->fdesktop_obj = _tmp2_;
+ self->priv->fdesktop_obj = _tmp1_;
g_signal_connect_object (self->priv->fdesktop_obj, "name-owner-changed", (GCallback) _mpris2_watcher_name_changes_detected_free_desktop_object_name_owner_changed, self, 0);
mpris2_watcher_check_for_active_clients (self, NULL, NULL);
goto __finally10;
diff --git a/src/music-player-bridge.c b/src/music-player-bridge.c
index dc04230..7c652a1 100644
--- a/src/music-player-bridge.c
+++ b/src/music-player-bridge.c
@@ -1,4 +1,4 @@
-/* music-player-bridge.c generated by valac 0.11.6, the Vala compiler
+/* music-player-bridge.c generated by valac 0.11.7, the Vala compiler
* generated from music-player-bridge.vala, do not modify */
/*
@@ -173,9 +173,9 @@ void music_player_bridge_client_has_become_available (MusicPlayerBridge* self, c
gchar** settings_manager_fetch_blacklist (SettingsManager* self, int* result_length1);
static gboolean _vala_string_array_contains (gchar** stack, int stack_length, gchar* needle);
void settings_manager_add_interested (SettingsManager* self, const gchar* app_desktop_name);
+static gboolean* _bool_dup (gboolean* self);
GType player_item_get_type (void) G_GNUC_CONST;
GType mpris2_controller_get_type (void) G_GNUC_CONST;
-static gboolean* _bool_dup (gboolean* self);
void player_controller_update_state (PlayerController* self, PlayerControllerstate new_state);
void player_controller_activate (PlayerController* self, const gchar* dbus_name);
void music_player_bridge_client_has_vanished (MusicPlayerBridge* self, const gchar* mpris_root_interface);
@@ -290,7 +290,9 @@ static void music_player_bridge_try_to_add_inactive_familiar_clients (MusicPlaye
_tmp3_ = g_strconcat (desktop, ".desktop", NULL);
_tmp4_ = _tmp3_;
_tmp5_ = music_player_bridge_create_app_info (_tmp4_);
- app_info = (_tmp6_ = _tmp5_, _g_free0 (_tmp4_), _tmp6_);
+ _tmp6_ = _tmp5_;
+ _g_free0 (_tmp4_);
+ app_info = _tmp6_;
if (app_info == NULL) {
g_warning ("music-player-bridge.vala:65: Could not create app_info for path %s \n" \
" Getting out of here ", desktop);
@@ -305,7 +307,9 @@ static void music_player_bridge_try_to_add_inactive_familiar_clients (MusicPlaye
_tmp10_ = _tmp9_;
_tmp11_ = music_player_bridge_calculate_menu_position (self);
_tmp12_ = player_controller_new (self->priv->root_menu, app_info, NULL, _tmp10_, _tmp11_, NULL, PLAYER_CONTROLLER_STATE_OFFLINE);
- ctrl = (_tmp13_ = _tmp12_, _g_free0 (_tmp10_), _tmp13_);
+ _tmp13_ = _tmp12_;
+ _g_free0 (_tmp10_);
+ ctrl = _tmp13_;
gee_abstract_map_set ((GeeAbstractMap*) self->priv->registered_clients, mpris_key, ctrl);
_g_object_unref0 (ctrl);
_g_free0 (mpris_key);
@@ -390,7 +394,9 @@ void music_player_bridge_client_has_become_available (MusicPlayerBridge* self, c
_tmp2_ = settings_manager_fetch_blacklist (self->priv->settings_manager, &_tmp1_);
_tmp3_ = _tmp2_;
_tmp3__length1 = _tmp1_;
- if ((_tmp4_ = _vala_string_array_contains (_tmp3_, _tmp1_, desktop), _tmp3_ = (_vala_array_free (_tmp3_, _tmp3__length1, (GDestroyNotify) g_free), NULL), _tmp4_)) {
+ _tmp4_ = _vala_string_array_contains (_tmp3_, _tmp1_, desktop);
+ _tmp3_ = (_vala_array_free (_tmp3_, _tmp3__length1, (GDestroyNotify) g_free), NULL);
+ if (_tmp4_) {
g_debug ("music-player-bridge.vala:101: Client %s attempting to register but I'm" \
" afraid it is blacklisted", desktop);
return;
@@ -399,7 +405,9 @@ void music_player_bridge_client_has_become_available (MusicPlayerBridge* self, c
_tmp5_ = g_strconcat (desktop, ".desktop", NULL);
_tmp6_ = _tmp5_;
_tmp7_ = music_player_bridge_create_app_info (_tmp6_);
- app_info = (_tmp8_ = _tmp7_, _g_free0 (_tmp6_), _tmp8_);
+ _tmp8_ = _tmp7_;
+ _g_free0 (_tmp6_);
+ app_info = _tmp8_;
if (app_info == NULL) {
g_warning ("music-player-bridge.vala:109: Could not create app_info for path %s \n" \
" Getting out of here ", desktop);
@@ -423,7 +431,9 @@ void music_player_bridge_client_has_become_available (MusicPlayerBridge* self, c
_tmp13_ = _tmp12_;
_tmp14_ = music_player_bridge_calculate_menu_position (self);
_tmp15_ = player_controller_new (self->priv->root_menu, app_info, dbus_name, _tmp13_, _tmp14_, &use_playlists, PLAYER_CONTROLLER_STATE_READY);
- ctrl = (_tmp16_ = _tmp15_, _g_free0 (_tmp13_), _tmp16_);
+ _tmp16_ = _tmp15_;
+ _g_free0 (_tmp13_);
+ ctrl = _tmp16_;
gee_abstract_map_set ((GeeAbstractMap*) self->priv->registered_clients, mpris_key, ctrl);
g_debug ("music-player-bridge.vala:126: Have not seen this %s before, new contro" \
"ller created.", desktop);
@@ -434,26 +444,24 @@ void music_player_bridge_client_has_become_available (MusicPlayerBridge* self, c
gpointer _tmp17_ = NULL;
PlayerController* _tmp18_;
gboolean* _tmp19_;
- gboolean* _tmp20_;
- gpointer _tmp21_ = NULL;
- PlayerController* _tmp22_;
- gpointer _tmp23_ = NULL;
- PlayerController* _tmp24_;
+ gpointer _tmp20_ = NULL;
+ PlayerController* _tmp21_;
+ gpointer _tmp22_ = NULL;
+ PlayerController* _tmp23_;
_tmp17_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key);
_tmp18_ = (PlayerController*) _tmp17_;
_tmp19_ = __bool_dup0 (&use_playlists);
- _tmp20_ = _tmp19_;
_g_free0 (_tmp18_->use_playlists);
- _tmp18_->use_playlists = _tmp20_;
+ _tmp18_->use_playlists = _tmp19_;
_g_object_unref0 (_tmp18_);
- _tmp21_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key);
- _tmp22_ = (PlayerController*) _tmp21_;
- player_controller_update_state (_tmp22_, PLAYER_CONTROLLER_STATE_READY);
- _g_object_unref0 (_tmp22_);
- _tmp23_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key);
- _tmp24_ = (PlayerController*) _tmp23_;
- player_controller_activate (_tmp24_, dbus_name);
- _g_object_unref0 (_tmp24_);
+ _tmp20_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key);
+ _tmp21_ = (PlayerController*) _tmp20_;
+ player_controller_update_state (_tmp21_, PLAYER_CONTROLLER_STATE_READY);
+ _g_object_unref0 (_tmp21_);
+ _tmp22_ = gee_abstract_map_get ((GeeAbstractMap*) self->priv->registered_clients, mpris_key);
+ _tmp23_ = (PlayerController*) _tmp22_;
+ player_controller_activate (_tmp23_, dbus_name);
+ _g_object_unref0 (_tmp23_);
g_debug ("music-player-bridge.vala:134: Application has already registered - awa" \
"ken the hibernation: %s \n", dbus_name);
}
@@ -514,20 +522,16 @@ static void _music_player_bridge_client_has_vanished_mpris2_watcher_client_disap
void music_player_bridge_set_root_menu_item (MusicPlayerBridge* self, DbusmenuMenuitem* menu) {
DbusmenuMenuitem* _tmp0_;
- DbusmenuMenuitem* _tmp1_;
- Mpris2Watcher* _tmp2_ = NULL;
- Mpris2Watcher* _tmp3_;
+ Mpris2Watcher* _tmp1_ = NULL;
g_return_if_fail (self != NULL);
g_return_if_fail (menu != NULL);
_tmp0_ = _g_object_ref0 (menu);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->root_menu);
- self->priv->root_menu = _tmp1_;
+ self->priv->root_menu = _tmp0_;
music_player_bridge_try_to_add_inactive_familiar_clients (self);
- _tmp2_ = mpris2_watcher_new ();
- _tmp3_ = _tmp2_;
+ _tmp1_ = mpris2_watcher_new ();
_g_object_unref0 (self->priv->watcher);
- self->priv->watcher = _tmp3_;
+ self->priv->watcher = _tmp1_;
g_signal_connect_object (self->priv->watcher, "client-appeared", (GCallback) _music_player_bridge_client_has_become_available_mpris2_watcher_client_appeared, self, 0);
g_signal_connect_object (self->priv->watcher, "client-disappeared", (GCallback) _music_player_bridge_client_has_vanished_mpris2_watcher_client_disappeared, self, 0);
}
@@ -556,7 +560,8 @@ static GAppInfo* music_player_bridge_create_app_info (const gchar* desktop) {
_g_object_unref0 (info);
return result;
}
- _tmp3_ = _g_object_ref0 ((_tmp2_ = info, G_IS_APP_INFO (_tmp2_) ? ((GAppInfo*) _tmp2_) : NULL));
+ _tmp2_ = info;
+ _tmp3_ = _g_object_ref0 (G_IS_APP_INFO (_tmp2_) ? ((GAppInfo*) _tmp2_) : NULL);
app_info = _tmp3_;
result = app_info;
_g_object_unref0 (info);
@@ -581,7 +586,9 @@ static gchar* music_player_bridge_fetch_icon_name (const gchar* desktop) {
_tmp0_ = g_strconcat (desktop, ".desktop", NULL);
_tmp1_ = _tmp0_;
_tmp2_ = g_desktop_app_info_new (_tmp1_);
- info = (_tmp3_ = _tmp2_, _g_free0 (_tmp1_), _tmp3_);
+ _tmp3_ = _tmp2_;
+ _g_free0 (_tmp1_);
+ info = _tmp3_;
_tmp4_ = g_key_file_new ();
desktop_keyfile = _tmp4_;
_tmp5_ = g_desktop_app_info_get_filename (info);
@@ -681,8 +688,8 @@ static gchar* music_player_bridge_determine_key (gchar* desktop_or_interface) {
gchar** tokens;
gint tokens_length1;
gint _tokens_size_;
- gchar** _tmp5_;
- gchar** _tmp6_ = NULL;
+ gchar** _tmp4_;
+ gchar** _tmp5_ = NULL;
gchar** temp;
gint temp_length1;
gint _temp_size_;
@@ -695,23 +702,19 @@ static gchar* music_player_bridge_determine_key (gchar* desktop_or_interface) {
_tokens_size_ = _vala_array_length (_tmp1_);
if (tokens_length1 > 1) {
gchar* _tmp3_;
- gchar* _tmp4_;
_tmp3_ = g_strdup (tokens[tokens_length1 - 1]);
- _tmp4_ = _tmp3_;
_g_free0 (_result_);
- _result_ = _tmp4_;
+ _result_ = _tmp3_;
}
- _tmp6_ = _tmp5_ = g_strsplit (_result_, "-", 0);
- temp = _tmp6_;
- temp_length1 = _vala_array_length (_tmp5_);
- _temp_size_ = _vala_array_length (_tmp5_);
+ _tmp5_ = _tmp4_ = g_strsplit (_result_, "-", 0);
+ temp = _tmp5_;
+ temp_length1 = _vala_array_length (_tmp4_);
+ _temp_size_ = _vala_array_length (_tmp4_);
if (temp_length1 > 1) {
- gchar* _tmp7_;
- gchar* _tmp8_;
- _tmp7_ = g_strdup (temp[0]);
- _tmp8_ = _tmp7_;
+ gchar* _tmp6_;
+ _tmp6_ = g_strdup (temp[0]);
_g_free0 (_result_);
- _result_ = _tmp8_;
+ _result_ = _tmp6_;
}
g_debug ("music-player-bridge.vala:218: determine key result = %s", _result_);
result = _result_;
@@ -731,20 +734,16 @@ static GObject * music_player_bridge_constructor (GType type, guint n_construct_
GObjectClass * parent_class;
MusicPlayerBridge * self;
GeeHashMap* _tmp0_ = NULL;
- GeeHashMap* _tmp1_;
- SettingsManager* _tmp2_ = NULL;
- SettingsManager* _tmp3_;
+ SettingsManager* _tmp1_ = NULL;
parent_class = G_OBJECT_CLASS (music_player_bridge_parent_class);
obj = parent_class->constructor (type, n_construct_properties, construct_properties);
self = MUSIC_PLAYER_BRIDGE (obj);
_tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, TYPE_PLAYER_CONTROLLER, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->registered_clients);
- self->priv->registered_clients = _tmp1_;
- _tmp2_ = settings_manager_new ();
- _tmp3_ = _tmp2_;
+ self->priv->registered_clients = _tmp0_;
+ _tmp1_ = settings_manager_new ();
_g_object_unref0 (self->priv->settings_manager);
- self->priv->settings_manager = _tmp3_;
+ self->priv->settings_manager = _tmp1_;
g_signal_connect_object (self->priv->settings_manager, "blacklist-updates", (GCallback) _music_player_bridge_on_blacklist_update_settings_manager_blacklist_updates, self, 0);
return obj;
}
diff --git a/src/music-player-bridge.h b/src/music-player-bridge.h
index 5301177..857e220 100644
--- a/src/music-player-bridge.h
+++ b/src/music-player-bridge.h
@@ -1,4 +1,4 @@
-/* music-player-bridge.h generated by valac 0.11.6, the Vala compiler, do not modify */
+/* music-player-bridge.h generated by valac 0.11.7, the Vala compiler, do not modify */
#ifndef __MUSIC_PLAYER_BRIDGE_H__
diff --git a/src/player-controller.c b/src/player-controller.c
index f0d5d60..2eb7992 100644
--- a/src/player-controller.c
+++ b/src/player-controller.c
@@ -1,4 +1,4 @@
-/* player-controller.c generated by valac 0.11.6, the Vala compiler
+/* player-controller.c generated by valac 0.11.7, the Vala compiler
* generated from player-controller.vala, do not modify */
/*
@@ -283,30 +283,24 @@ static gpointer _g_object_ref0 (gpointer self) {
PlayerController* player_controller_construct (GType object_type, DbusmenuMenuitem* root, GAppInfo* app, const gchar* dbus_name, const gchar* icon_name, gint offset, gboolean* use_playlists, PlayerControllerstate initial_state) {
PlayerController * self = NULL;
gboolean* _tmp0_;
- gboolean* _tmp1_;
- DbusmenuMenuitem* _tmp2_;
- DbusmenuMenuitem* _tmp3_;
- GeeArrayList* _tmp4_ = NULL;
- GeeArrayList* _tmp5_;
+ DbusmenuMenuitem* _tmp1_;
+ GeeArrayList* _tmp2_ = NULL;
g_return_val_if_fail (root != NULL, NULL);
g_return_val_if_fail (app != NULL, NULL);
g_return_val_if_fail (icon_name != NULL, NULL);
self = (PlayerController*) g_object_new (object_type, NULL);
_tmp0_ = __bool_dup0 (use_playlists);
- _tmp1_ = _tmp0_;
_g_free0 (self->use_playlists);
- self->use_playlists = _tmp1_;
- _tmp2_ = _g_object_ref0 (root);
- _tmp3_ = _tmp2_;
+ self->use_playlists = _tmp0_;
+ _tmp1_ = _g_object_ref0 (root);
_g_object_unref0 (self->priv->root_menu);
- self->priv->root_menu = _tmp3_;
+ self->priv->root_menu = _tmp1_;
player_controller_set_app_info (self, app);
player_controller_set_dbus_name (self, dbus_name);
player_controller_set_icon_name (self, icon_name);
- _tmp4_ = gee_array_list_new (TYPE_PLAYER_ITEM, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL);
- _tmp5_ = _tmp4_;
+ _tmp2_ = gee_array_list_new (TYPE_PLAYER_ITEM, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL);
_g_object_unref0 (self->custom_items);
- self->custom_items = _tmp5_;
+ self->custom_items = _tmp2_;
self->current_state = (gint) initial_state;
player_controller_set_menu_offset (self, offset);
player_controller_construct_widgets (self);
@@ -393,7 +387,6 @@ static void player_controller_establish_mpris_connection (PlayerController* self
gchar* _tmp1_ = NULL;
gchar* _tmp2_;
Mpris2Controller* _tmp3_ = NULL;
- Mpris2Controller* _tmp4_;
g_return_if_fail (self != NULL);
if (self->current_state != PLAYER_CONTROLLER_STATE_READY) {
_tmp0_ = TRUE;
@@ -411,9 +404,8 @@ static void player_controller_establish_mpris_connection (PlayerController* self
"s value = %s ", _tmp2_);
_g_free0 (_tmp2_);
_tmp3_ = mpris2_controller_new (self);
- _tmp4_ = _tmp3_;
_g_object_unref0 (self->mpris_bridge);
- self->mpris_bridge = _tmp4_;
+ self->mpris_bridge = _tmp3_;
player_controller_determine_state (self);
}
@@ -460,12 +452,14 @@ void player_controller_remove_from_menu (PlayerController* self) {
}
_g_object_unref0 (_item_list);
}
- if (_bool_equal (self->use_playlists, (_tmp3_ = TRUE, &_tmp3_)) == TRUE) {
+ _tmp3_ = TRUE;
+ if (_bool_equal (self->use_playlists, &_tmp3_) == TRUE) {
gpointer _tmp4_ = NULL;
PlayerItem* _tmp5_;
PlaylistsMenuitem* playlists_menuitem;
_tmp4_ = gee_abstract_list_get ((GeeAbstractList*) self->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_PLAYLISTS);
- playlists_menuitem = (_tmp5_ = (PlayerItem*) _tmp4_, IS_PLAYLISTS_MENUITEM (_tmp5_) ? ((PlaylistsMenuitem*) _tmp5_) : NULL);
+ _tmp5_ = (PlayerItem*) _tmp4_;
+ playlists_menuitem = IS_PLAYLISTS_MENUITEM (_tmp5_) ? ((PlaylistsMenuitem*) _tmp5_) : NULL;
dbusmenu_menuitem_child_delete (self->priv->root_menu, playlists_menuitem->root_item);
_g_object_unref0 (playlists_menuitem);
}
@@ -484,7 +478,6 @@ void player_controller_hibernate (PlayerController* self) {
gpointer _tmp8_ = NULL;
PlayerItem* _tmp9_;
TitleMenuitem* title;
- Mpris2Controller* _tmp10_;
g_return_if_fail (self != NULL);
player_controller_update_state (self, PLAYER_CONTROLLER_STATE_OFFLINE);
_tmp0_ = gee_abstract_list_get ((GeeAbstractList*) self->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_TRANSPORT);
@@ -502,11 +495,11 @@ void player_controller_hibernate (PlayerController* self) {
_g_object_unref0 (_tmp7_);
_g_object_unref0 (_tmp5_);
_tmp8_ = gee_abstract_list_get ((GeeAbstractList*) self->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_TITLE);
- title = (_tmp9_ = (PlayerItem*) _tmp8_, IS_TITLE_MENUITEM (_tmp9_) ? ((TitleMenuitem*) _tmp9_) : NULL);
+ _tmp9_ = (PlayerItem*) _tmp8_;
+ title = IS_TITLE_MENUITEM (_tmp9_) ? ((TitleMenuitem*) _tmp9_) : NULL;
title_menuitem_toggle_active_triangle (title, FALSE);
- _tmp10_ = NULL;
_g_object_unref0 (self->mpris_bridge);
- self->mpris_bridge = _tmp10_;
+ self->mpris_bridge = NULL;
_g_object_unref0 (title);
}
@@ -526,7 +519,8 @@ void player_controller_update_layout (PlayerController* self) {
PlayerItem* _tmp14_;
g_return_if_fail (self != NULL);
_tmp0_ = gee_abstract_list_get ((GeeAbstractList*) self->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_PLAYLISTS);
- playlists_menuitem = (_tmp1_ = (PlayerItem*) _tmp0_, IS_PLAYLISTS_MENUITEM (_tmp1_) ? ((PlaylistsMenuitem*) _tmp1_) : NULL);
+ _tmp1_ = (PlayerItem*) _tmp0_;
+ playlists_menuitem = IS_PLAYLISTS_MENUITEM (_tmp1_) ? ((PlaylistsMenuitem*) _tmp1_) : NULL;
if (self->current_state != PLAYER_CONTROLLER_STATE_CONNECTED) {
gpointer _tmp2_ = NULL;
PlayerItem* _tmp3_;
@@ -623,7 +617,8 @@ static void player_controller_construct_widgets (PlayerController* self) {
PlaylistsMenuitem* _tmp12_;
PlaylistsMenuitem* playlists_menuitem;
gint _tmp13_;
- _tmp12_ = _g_object_ref0 ((_tmp11_ = item, IS_PLAYLISTS_MENUITEM (_tmp11_) ? ((PlaylistsMenuitem*) _tmp11_) : NULL));
+ _tmp11_ = item;
+ _tmp12_ = _g_object_ref0 (IS_PLAYLISTS_MENUITEM (_tmp11_) ? ((PlaylistsMenuitem*) _tmp11_) : NULL);
playlists_menuitem = _tmp12_;
_tmp13_ = gee_abstract_list_index_of ((GeeAbstractList*) self->custom_items, item);
dbusmenu_menuitem_child_add_position (self->priv->root_menu, playlists_menuitem->root_item, (guint) (self->priv->_menu_offset + _tmp13_));
@@ -650,7 +645,8 @@ static void player_controller_determine_state (PlayerController* self) {
TitleMenuitem* title;
player_controller_update_state (self, PLAYER_CONTROLLER_STATE_CONNECTED);
_tmp1_ = gee_abstract_list_get ((GeeAbstractList*) self->custom_items, (gint) PLAYER_CONTROLLER_WIDGET_ORDER_TITLE);
- title = (_tmp2_ = (PlayerItem*) _tmp1_, IS_TITLE_MENUITEM (_tmp2_) ? ((TitleMenuitem*) _tmp2_) : NULL);
+ _tmp2_ = (PlayerItem*) _tmp1_;
+ title = IS_TITLE_MENUITEM (_tmp2_) ? ((TitleMenuitem*) _tmp2_) : NULL;
title_menuitem_toggle_active_triangle (title, TRUE);
mpris2_controller_initial_update (self->mpris_bridge);
_g_object_unref0 (title);
@@ -670,12 +666,10 @@ const gchar* player_controller_get_dbus_name (PlayerController* self) {
void player_controller_set_dbus_name (PlayerController* self, const gchar* value) {
gchar* _tmp0_;
- gchar* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = g_strdup (value);
- _tmp1_ = _tmp0_;
_g_free0 (self->priv->_dbus_name);
- self->priv->_dbus_name = _tmp1_;
+ self->priv->_dbus_name = _tmp0_;
g_object_notify ((GObject *) self, "dbus-name");
}
@@ -690,12 +684,10 @@ GAppInfo* player_controller_get_app_info (PlayerController* self) {
void player_controller_set_app_info (PlayerController* self, GAppInfo* value) {
GAppInfo* _tmp0_;
- GAppInfo* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = _g_object_ref0 (value);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->_app_info);
- self->priv->_app_info = _tmp1_;
+ self->priv->_app_info = _tmp0_;
g_object_notify ((GObject *) self, "app-info");
}
@@ -725,12 +717,10 @@ const gchar* player_controller_get_icon_name (PlayerController* self) {
void player_controller_set_icon_name (PlayerController* self, const gchar* value) {
gchar* _tmp0_;
- gchar* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = g_strdup (value);
- _tmp1_ = _tmp0_;
_g_free0 (self->priv->_icon_name);
- self->priv->_icon_name = _tmp1_;
+ self->priv->_icon_name = _tmp0_;
g_object_notify ((GObject *) self, "icon-name");
}
diff --git a/src/player-item.c b/src/player-item.c
index 01286a7..6133279 100644
--- a/src/player-item.c
+++ b/src/player-item.c
@@ -1,4 +1,4 @@
-/* player-item.c generated by valac 0.11.6, the Vala compiler
+/* player-item.c generated by valac 0.11.7, the Vala compiler
* generated from player-item.vala, do not modify */
/*
@@ -254,7 +254,8 @@ void player_item_update (PlayerItem* self, GHashTable* data, GeeHashSet* attribu
PlayerItem* _tmp12_;
MetadataMenuitem* _tmp13_;
MetadataMenuitem* metadata;
- _tmp13_ = _g_object_ref0 ((_tmp12_ = self, IS_METADATA_MENUITEM (_tmp12_) ? ((MetadataMenuitem*) _tmp12_) : NULL));
+ _tmp12_ = self;
+ _tmp13_ = _g_object_ref0 (IS_METADATA_MENUITEM (_tmp12_) ? ((MetadataMenuitem*) _tmp12_) : NULL);
metadata = _tmp13_;
metadata_menuitem_fetch_art (metadata, update, property);
_g_object_unref0 (metadata);
@@ -350,12 +351,10 @@ PlayerController* player_item_get_owner (PlayerItem* self) {
static void player_item_set_owner (PlayerItem* self, PlayerController* value) {
PlayerController* _tmp0_;
- PlayerController* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = _g_object_ref0 (value);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->_owner);
- self->priv->_owner = _tmp1_;
+ self->priv->_owner = _tmp0_;
g_object_notify ((GObject *) self, "owner");
}
@@ -370,12 +369,10 @@ const gchar* player_item_get_item_type (PlayerItem* self) {
static void player_item_set_item_type (PlayerItem* self, const gchar* value) {
gchar* _tmp0_;
- gchar* _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = g_strdup (value);
- _tmp1_ = _tmp0_;
_g_free0 (self->priv->_item_type);
- self->priv->_item_type = _tmp1_;
+ self->priv->_item_type = _tmp0_;
g_object_notify ((GObject *) self, "item-type");
}
diff --git a/src/playlists-menu-item.c b/src/playlists-menu-item.c
index b8ea942..ced54cf 100644
--- a/src/playlists-menu-item.c
+++ b/src/playlists-menu-item.c
@@ -1,4 +1,4 @@
-/* playlists-menu-item.c generated by valac 0.11.6, the Vala compiler
+/* playlists-menu-item.c generated by valac 0.11.7, the Vala compiler
* generated from playlists-menu-item.vala, do not modify */
/*
@@ -33,6 +33,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include <common-defs.h>
#include <stdlib.h>
#include <string.h>
+#include <glib/gi18n-lib.h>
#include <gio/gio.h>
@@ -225,7 +226,8 @@ void playlists_menuitem_update (PlaylistsMenuitem* self, PlaylistDetails* playli
PlaylistDetails _tmp0_;
PlaylistDetails _tmp1_ = {0};
PlaylistDetails detail;
- _tmp0_ = (playlist_details_copy (&detail_collection[detail_it], &_tmp1_), _tmp1_);
+ playlist_details_copy (&detail_collection[detail_it], &_tmp1_);
+ _tmp0_ = _tmp1_;
detail = _tmp0_;
{
Block1Data* _data1_;
@@ -275,7 +277,9 @@ void playlists_menuitem_update (PlaylistsMenuitem* self, PlaylistDetails* playli
_tmp6_ = gee_map_get_values ((GeeMap*) self->priv->current_playlists);
_tmp7_ = _tmp6_;
_tmp8_ = gee_iterable_iterator ((GeeIterable*) _tmp7_);
- _item_it = (_tmp9_ = _tmp8_, _g_object_unref0 (_tmp7_), _tmp9_);
+ _tmp9_ = _tmp8_;
+ _g_object_unref0 (_tmp7_);
+ _item_it = _tmp9_;
while (TRUE) {
gboolean _tmp10_;
gpointer _tmp11_ = NULL;
@@ -298,7 +302,8 @@ void playlists_menuitem_update (PlaylistsMenuitem* self, PlaylistDetails* playli
PlaylistDetails _tmp12_;
PlaylistDetails _tmp13_ = {0};
PlaylistDetails detail;
- _tmp12_ = (playlist_details_copy (&detail_collection[detail_it], &_tmp13_), _tmp13_);
+ playlist_details_copy (&detail_collection[detail_it], &_tmp13_);
+ _tmp12_ = _tmp13_;
detail = _tmp12_;
{
const gchar* _tmp14_ = NULL;
@@ -318,7 +323,9 @@ void playlists_menuitem_update (PlaylistsMenuitem* self, PlaylistDetails* playli
_tmp15_ = dbusmenu_menuitem_property_get (self->root_item, DBUSMENU_PLAYLIST_MENUITEM_PATH);
_tmp16_ = dbusmenu_menuitem_property_get (item, DBUSMENU_PLAYLIST_MENUITEM_PATH);
if (g_strcmp0 (_tmp15_, _tmp16_) == 0) {
- dbusmenu_menuitem_property_set (self->root_item, DBUSMENU_MENUITEM_PROP_LABEL, "Choose Playlist");
+ const gchar* _tmp17_ = NULL;
+ _tmp17_ = _ ("Choose Playlist");
+ dbusmenu_menuitem_property_set (self->root_item, DBUSMENU_MENUITEM_PROP_LABEL, _tmp17_);
}
dbusmenu_menuitem_child_delete (self->root_item, item);
}
@@ -354,7 +361,9 @@ static gchar* playlists_menuitem_parse_icon_path (PlaylistsMenuitem* self, const
icon_file = _tmp0_;
_tmp1_ = g_file_get_path (icon_file);
_tmp2_ = _tmp1_;
- if ((_tmp3_ = _tmp2_ == NULL, _g_free0 (_tmp2_), _tmp3_)) {
+ _tmp3_ = _tmp2_ == NULL;
+ _g_free0 (_tmp2_);
+ if (_tmp3_) {
result = NULL;
_g_object_unref0 (icon_file);
return result;
@@ -365,7 +374,10 @@ static gchar* playlists_menuitem_parse_icon_path (PlaylistsMenuitem* self, const
_tmp8_ = _tmp7_;
_tmp8__length1 = _vala_array_length (_tmp6_);
_tmp9_ = g_strdup (_tmp8_[0]);
- result = (_tmp10_ = _tmp9_, _tmp8_ = (_vala_array_free (_tmp8_, _tmp8__length1, (GDestroyNotify) g_free), NULL), _g_free0 (_tmp5_), _tmp10_);
+ _tmp10_ = _tmp9_;
+ _tmp8_ = (_vala_array_free (_tmp8_, _tmp8__length1, (GDestroyNotify) g_free), NULL);
+ _g_free0 (_tmp5_);
+ result = _tmp10_;
_g_object_unref0 (icon_file);
return result;
}
@@ -383,7 +395,9 @@ void playlists_menuitem_update_individual_playlist (PlaylistsMenuitem* self, Pla
_tmp0_ = gee_map_get_values ((GeeMap*) self->priv->current_playlists);
_tmp1_ = _tmp0_;
_tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
- _item_it = (_tmp3_ = _tmp2_, _g_object_unref0 (_tmp1_), _tmp3_);
+ _tmp3_ = _tmp2_;
+ _g_object_unref0 (_tmp1_);
+ _item_it = _tmp3_;
while (TRUE) {
gboolean _tmp4_;
gpointer _tmp5_ = NULL;
@@ -430,7 +444,9 @@ static gboolean playlists_menuitem_already_observed (PlaylistsMenuitem* self, Pl
_tmp0_ = gee_map_get_values ((GeeMap*) self->priv->current_playlists);
_tmp1_ = _tmp0_;
_tmp2_ = gee_iterable_iterator ((GeeIterable*) _tmp1_);
- _item_it = (_tmp3_ = _tmp2_, _g_object_unref0 (_tmp1_), _tmp3_);
+ _tmp3_ = _tmp2_;
+ _g_object_unref0 (_tmp1_);
+ _item_it = _tmp3_;
while (TRUE) {
gboolean _tmp4_;
gpointer _tmp5_ = NULL;
@@ -471,10 +487,10 @@ void playlists_menuitem_active_playlist_update (PlaylistsMenuitem* self, Playlis
_tmp0_ = g_strdup ((*detail).name);
update = _tmp0_;
if (g_strcmp0 (update, "") == 0) {
- gchar* _tmp1_;
+ const gchar* _tmp1_ = NULL;
gchar* _tmp2_;
- _tmp1_ = g_strdup ("Choose Playlist");
- _tmp2_ = _tmp1_;
+ _tmp1_ = _ ("Choose Playlist");
+ _tmp2_ = g_strdup (_tmp1_);
_g_free0 (update);
update = _tmp2_;
}
@@ -493,7 +509,7 @@ static void playlists_menuitem_submenu_item_activated (PlaylistsMenuitem* self,
g_return_if_fail (self != NULL);
_tmp0_ = gee_abstract_map_has_key ((GeeAbstractMap*) self->priv->current_playlists, GINT_TO_POINTER (menu_item_id));
if (!_tmp0_) {
- g_warning ("playlists-menu-item.vala:129: item %i was activated but we don't have " \
+ g_warning ("playlists-menu-item.vala:133: item %i was activated but we don't have " \
"a corresponding playlist", menu_item_id);
return;
}
@@ -524,21 +540,19 @@ static GObject * playlists_menuitem_constructor (GType type, guint n_construct_p
GObjectClass * parent_class;
PlaylistsMenuitem * self;
GeeHashMap* _tmp0_ = NULL;
- GeeHashMap* _tmp1_;
- DbusmenuMenuitem* _tmp2_ = NULL;
- DbusmenuMenuitem* _tmp3_;
+ DbusmenuMenuitem* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
parent_class = G_OBJECT_CLASS (playlists_menuitem_parent_class);
obj = parent_class->constructor (type, n_construct_properties, construct_properties);
self = PLAYLISTS_MENUITEM (obj);
_tmp0_ = gee_hash_map_new (G_TYPE_INT, NULL, NULL, DBUSMENU_TYPE_MENUITEM, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->current_playlists);
- self->priv->current_playlists = _tmp1_;
- _tmp2_ = dbusmenu_menuitem_new ();
- _tmp3_ = _tmp2_;
+ self->priv->current_playlists = _tmp0_;
+ _tmp1_ = dbusmenu_menuitem_new ();
_g_object_unref0 (self->root_item);
- self->root_item = _tmp3_;
- dbusmenu_menuitem_property_set (self->root_item, DBUSMENU_MENUITEM_PROP_LABEL, "Choose Playlist");
+ self->root_item = _tmp1_;
+ _tmp2_ = _ ("Choose Playlist");
+ dbusmenu_menuitem_property_set (self->root_item, DBUSMENU_MENUITEM_PROP_LABEL, _tmp2_);
dbusmenu_menuitem_property_set (self->root_item, DBUSMENU_PLAYLIST_MENUITEM_PATH, "");
return obj;
}
diff --git a/src/playlists-menu-item.vala b/src/playlists-menu-item.vala
index 98d18f4..79ab506 100644
--- a/src/playlists-menu-item.vala
+++ b/src/playlists-menu-item.vala
@@ -17,11 +17,13 @@ You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+using Config;
using Dbusmenu;
using DbusmenuPlaylists;
using DbusmenuPlaylist;
using Gee;
+
public class PlaylistsMenuitem : PlayerItem
{
private HashMap<int, Dbusmenu.Menuitem> current_playlists;
@@ -31,12 +33,14 @@ public class PlaylistsMenuitem : PlayerItem
{
Object ( item_type: MENUITEM_TYPE, owner: parent );
}
+
construct{
this.current_playlists = new HashMap<int, Dbusmenu.Menuitem>();
this.root_item = new Menuitem();
- this.root_item.property_set ( MENUITEM_PROP_LABEL, "Choose Playlist" );
+ this.root_item.property_set ( MENUITEM_PROP_LABEL, _("Choose Playlist") );
this.root_item.property_set ( MENUITEM_PATH, "" );
+
}
public new void update (PlaylistDetails[] playlists)
@@ -74,7 +78,7 @@ public class PlaylistsMenuitem : PlayerItem
}
if (within == false){
if (this.root_item.property_get (MENUITEM_PATH) == item.property_get (MENUITEM_PATH)){
- this.root_item.property_set (MENUITEM_PROP_LABEL, "Choose Playlist");
+ this.root_item.property_set (MENUITEM_PROP_LABEL, _("Choose Playlist"));
}
this.root_item.child_delete (item);
}
@@ -118,7 +122,7 @@ public class PlaylistsMenuitem : PlayerItem
public void active_playlist_update (PlaylistDetails detail)
{
var update = detail.name;
- if ( update == "" ) update = "Choose Playlist";
+ if ( update == "" ) update = _("Choose Playlist");
this.root_item.property_set (MENUITEM_PROP_LABEL, update);
this.root_item.property_set (MENUITEM_PATH, detail.path);
}
diff --git a/src/pulseaudio-mgr.c b/src/pulseaudio-mgr.c
index 6d11221..95f4c06 100644
--- a/src/pulseaudio-mgr.c
+++ b/src/pulseaudio-mgr.c
@@ -68,7 +68,7 @@ static void pm_sink_input_info_callback (pa_context *c,
const pa_sink_input_info *info,
int eol,
void *userdata);
-static void pm_update_active_sink (pa_context *c,
+static void pm_update_device (pa_context *c,
const pa_sink_info *info,
int eol,
void *userdata);
@@ -89,11 +89,11 @@ static pa_glib_mainloop *pa_main_loop = NULL;
Entry Point
**/
void
-pm_establish_pulse_connection (ActiveSink* active_sink)
+pm_establish_pulse_connection (Device* device)
{
pa_main_loop = pa_glib_mainloop_new (g_main_context_default ());
g_assert (pa_main_loop);
- reconnect_to_pulse ((gpointer)active_sink);
+ reconnect_to_pulse ((gpointer)device);
}
/**
@@ -119,7 +119,7 @@ reconnect_to_pulse (gpointer user_data)
{
g_debug("Attempt a pulse connection");
// reset
- g_return_val_if_fail (IS_ACTIVE_SINK (user_data), FALSE);
+ g_return_val_if_fail (IS_DEVICE (user_data), FALSE);
connection_attempts += 1;
if (pulse_context != NULL) {
@@ -216,38 +216,38 @@ pm_subscribed_events_callback (pa_context *c,
uint32_t index,
void* userdata)
{
- if (IS_ACTIVE_SINK (userdata) == FALSE){
+ if (IS_DEVICE (userdata) == FALSE){
g_critical ("subscribed events callback - our userdata is not what we think it should be");
return;
}
- ActiveSink* sink = ACTIVE_SINK (userdata);
+ Device* sink = DEVICE (userdata);
switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) {
case PA_SUBSCRIPTION_EVENT_SINK:
// We don't care about any other sink other than the active one.
- if (index != active_sink_get_index (sink))
+ if (index != device_get_sink_index (sink))
return;
if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
- active_sink_deactivate (sink);
+ device_sink_deactivated (sink);
}
else{
pa_operation_unref (pa_context_get_sink_info_by_index (c,
index,
- pm_update_active_sink,
+ pm_update_device,
userdata) );
}
break;
case PA_SUBSCRIPTION_EVENT_SOURCE:
g_debug ("Looks like source event of some description - index = %i", index);
// We don't care about any other sink other than the active one.
- if (index != active_sink_get_source_index (sink))
+ if (index != device_get_source_index (sink))
return;
if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
g_debug ("Source removal event - index = %i", index);
- active_sink_deactivate_voip_source (sink, FALSE);
+ device_deactivate_voip_source (sink, FALSE);
}
else{
pa_operation_unref (pa_context_get_source_info_by_index (c,
@@ -260,12 +260,12 @@ pm_subscribed_events_callback (pa_context *c,
// We don't care about sink input removals.
g_debug ("sink input event");
if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
- gint cached_index = active_sink_get_current_sink_input_index (sink);
+ gint cached_index = device_get_current_sink_input_index (sink);
g_debug ("Just saw a sink input removal event - index = %i and cached index = %i", index, cached_index);
if (index == cached_index){
- active_sink_deactivate_voip_client (sink);
+ device_deactivate_voip_client (sink);
}
}
else if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_NEW) {
@@ -308,7 +308,7 @@ pm_context_state_callback (pa_context *c, void *userdata)
break;
case PA_CONTEXT_FAILED:
g_warning("PA_CONTEXT_FAILED - Is PulseAudio Daemon running ?");
- active_sink_deactivate (ACTIVE_SINK (userdata));
+ device_sink_deactivated (DEVICE (userdata));
if (reconnect_idle_id == 0){
reconnect_idle_id = g_timeout_add_seconds (RECONNECT_DELAY,
reconnect_to_pulse,
@@ -362,7 +362,7 @@ pm_server_info_callback (pa_context *c,
if (info == NULL) {
g_warning("No PA server - get the hell out of here");
- active_sink_deactivate (ACTIVE_SINK (userdata));
+ device_sink_deactivated (DEVICE (userdata));
return;
}
// Go for the default sink
@@ -373,7 +373,7 @@ pm_server_info_callback (pa_context *c,
pm_default_sink_info_callback,
userdata) )) {
g_warning("pa_context_get_sink_info_by_namet() failed");
- active_sink_deactivate (ACTIVE_SINK (userdata));
+ device_sink_deactivated (DEVICE (userdata));
pa_operation_unref(operation);
return;
}
@@ -382,7 +382,7 @@ pm_server_info_callback (pa_context *c,
pm_sink_info_callback,
userdata))) {
g_warning("pa_context_get_sink_info_list() failed");
- active_sink_deactivate (ACTIVE_SINK (userdata));
+ device_sink_deactivated (DEVICE (userdata));
pa_operation_unref(operation);
return;
}
@@ -421,14 +421,14 @@ pm_sink_info_callback (pa_context *c,
return;
}
else {
- if (IS_ACTIVE_SINK (userdata) == FALSE || sink == NULL){
+ if (IS_DEVICE (userdata) == FALSE || sink == NULL){
g_warning ("sink info callback - our user data is not what we think it should be or the sink parameter is null");
return;
}
- ActiveSink* a_sink = ACTIVE_SINK (userdata);
- if (active_sink_is_populated (a_sink) == FALSE &&
+ Device* a_sink = DEVICE (userdata);
+ if (device_is_sink_populated (a_sink) == FALSE &&
g_ascii_strncasecmp("auto_null", sink->name, 9) != 0){
- active_sink_populate (a_sink, sink);
+ device_sink_populate (a_sink, sink);
}
}
}
@@ -443,16 +443,16 @@ pm_default_sink_info_callback (pa_context *c,
return;
}
else {
- if (IS_ACTIVE_SINK (userdata) == FALSE || info == NULL){
+ if (IS_DEVICE (userdata) == FALSE || info == NULL){
g_warning ("Default sink info callback - our user data is not what we think it should be or the info parameter is null");
return;
}
// Only repopulate if there is a change with regards the index
- if (active_sink_get_index (ACTIVE_SINK (userdata)) == info->index)
+ if (device_get_sink_index (DEVICE (userdata)) == info->index)
return;
g_debug ("Pulse Server has handed us a new default sink");
- active_sink_populate (ACTIVE_SINK (userdata), info);
+ device_sink_populate (DEVICE (userdata), info);
}
}
@@ -466,26 +466,26 @@ pm_sink_input_info_callback (pa_context *c,
return;
}
else {
- if (info == NULL || IS_ACTIVE_SINK (userdata) == FALSE) {
+ if (info == NULL || IS_DEVICE (userdata) == FALSE) {
g_warning("Sink input info callback : SINK INPUT INFO IS NULL or our user_data is not what we think it should be");
return;
}
- if (IS_ACTIVE_SINK (userdata) == FALSE){
+ if (IS_DEVICE (userdata) == FALSE){
g_warning ("sink input info callback - our user data is not what we think it should be");
return;
}
// Check if this is Voip sink input
gint result = pa_proplist_contains (info->proplist, PA_PROP_MEDIA_ROLE);
- ActiveSink* a_sink = ACTIVE_SINK (userdata);
+ Device* a_sink = DEVICE (userdata);
if (result == 1){
g_debug ("Sink input info has media role property");
const char* value = pa_proplist_gets (info->proplist, PA_PROP_MEDIA_ROLE);
g_debug ("prop role = %s", value);
- if (g_strcmp0 (value, "phone") == 0) {
+ if (g_strcmp0 (value, "phone") == 0 || g_strcmp0 (value, "production") == 0) {
g_debug ("And yes its a VOIP app ... sink input index = %i", info->index);
- active_sink_activate_voip_item (a_sink, (gint)info->index, (gint)info->client);
+ device_activate_voip_item (a_sink, (gint)info->index, (gint)info->client);
// TODO to start with we will assume our source is the same as what this 'client'
// is pointing at. This should probably be more intelligent :
// query for the list of source output info's and going on the name of the client
@@ -494,14 +494,14 @@ pm_sink_input_info_callback (pa_context *c,
}
// And finally check for the mute blocking state
- if (active_sink_get_index (a_sink) == info->sink){
- active_sink_determine_blocking_state (a_sink);
+ if (device_get_sink_index (a_sink) == info->sink){
+ device_determine_blocking_state (a_sink);
}
}
}
static void
-pm_update_active_sink (pa_context *c,
+pm_update_device (pa_context *c,
const pa_sink_info *info,
int eol,
void *userdata)
@@ -510,11 +510,11 @@ pm_update_active_sink (pa_context *c,
return;
}
else{
- if (IS_ACTIVE_SINK (userdata) == FALSE || info == NULL){
- g_warning ("update_active_sink - our user data is not what we think it should be or the info parameter is null");
+ if (IS_DEVICE (userdata) == FALSE || info == NULL){
+ g_warning ("update_device - our user data is not what we think it should be or the info parameter is null");
return;
}
- active_sink_update (ACTIVE_SINK(userdata), info);
+ device_sink_update (DEVICE(userdata), info);
}
}
@@ -551,16 +551,16 @@ pm_default_source_info_callback (pa_context *c,
return;
}
else {
- if (IS_ACTIVE_SINK (userdata) == FALSE || info == NULL){
+ if (IS_DEVICE (userdata) == FALSE || info == NULL){
g_warning ("Default source info callback - our user data is not what we think it should be or the source info parameter is null");
return;
}
// If there is an index change we need to change our cached source
- if (active_sink_get_source_index (ACTIVE_SINK (userdata)) == info->index)
+ if (device_get_source_index (DEVICE (userdata)) == info->index)
return;
g_debug ("Pulse Server has handed us a new default source");
- active_sink_deactivate_voip_source (ACTIVE_SINK (userdata), TRUE);
- active_sink_update_voip_input_source (ACTIVE_SINK (userdata), info);
+ device_deactivate_voip_source (DEVICE (userdata), TRUE);
+ device_update_voip_input_source (DEVICE (userdata), info);
}
}
@@ -574,13 +574,13 @@ pm_source_info_callback (pa_context *c,
return;
}
else {
- if (IS_ACTIVE_SINK (userdata) == FALSE || info == NULL){
+ if (IS_DEVICE (userdata) == FALSE || info == NULL){
g_warning ("source info callback - our user data is not what we think it should be or the source info parameter is null");
return;
}
// For now we will take the first available
- if (active_sink_is_voip_source_populated (ACTIVE_SINK (userdata)) == FALSE){
- active_sink_update_voip_input_source (ACTIVE_SINK (userdata), info);
+ if (device_is_voip_source_populated (DEVICE (userdata)) == FALSE){
+ device_update_voip_input_source (DEVICE (userdata), info);
}
}
}
@@ -595,11 +595,11 @@ pm_update_source_info_callback (pa_context *c,
return;
}
else {
- if (IS_ACTIVE_SINK (userdata) == FALSE || info == NULL ){
+ if (IS_DEVICE (userdata) == FALSE || info == NULL ){
g_warning ("source info update callback - our user data is not what we think it should be or the source info paramter is null");
return;
}
g_debug ("Got a source update for %s , index %i", info->name, info->index);
- active_sink_update_voip_input_source (ACTIVE_SINK (userdata), info);
+ device_update_voip_input_source (DEVICE (userdata), info);
}
}
diff --git a/src/pulseaudio-mgr.h b/src/pulseaudio-mgr.h
index d61117d..ace47f3 100644
--- a/src/pulseaudio-mgr.h
+++ b/src/pulseaudio-mgr.h
@@ -17,9 +17,9 @@ 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 "active-sink.h"
+#include "device.h"
-void pm_establish_pulse_connection (ActiveSink* active_sink);
+void pm_establish_pulse_connection (Device* device);
void close_pulse_activites();
void pm_update_volume (gint sink_index, pa_cvolume new_volume);
void pm_update_mic_gain (gint source_index, pa_cvolume new_gain);
diff --git a/src/settings-manager.c b/src/settings-manager.c
index 7536ced..a22d4fa 100644
--- a/src/settings-manager.c
+++ b/src/settings-manager.c
@@ -1,4 +1,4 @@
-/* settings-manager.c generated by valac 0.11.6, the Vala compiler
+/* settings-manager.c generated by valac 0.11.7, the Vala compiler
* generated from settings-manager.vala, do not modify */
/*
@@ -271,14 +271,12 @@ static GObject * settings_manager_constructor (GType type, guint n_construct_pro
GObjectClass * parent_class;
SettingsManager * self;
GSettings* _tmp0_ = NULL;
- GSettings* _tmp1_;
parent_class = G_OBJECT_CLASS (settings_manager_parent_class);
obj = parent_class->constructor (type, n_construct_properties, construct_properties);
self = SETTINGS_MANAGER (obj);
_tmp0_ = g_settings_new ("com.canonical.indicators.sound");
- _tmp1_ = _tmp0_;
_g_object_unref0 (self->priv->settings);
- self->priv->settings = _tmp1_;
+ self->priv->settings = _tmp0_;
g_signal_connect_object (self->priv->settings, "changed::blacklisted-media-players", (GCallback) _settings_manager_on_blacklist_event_g_settings_changed, self, 0);
return obj;
}
diff --git a/src/slider-menu-item.c b/src/slider-menu-item.c
index 1c88f01..974749f 100644
--- a/src/slider-menu-item.c
+++ b/src/slider-menu-item.c
@@ -23,11 +23,18 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include <glib/gi18n.h>
#include "slider-menu-item.h"
#include "common-defs.h"
+#include "pulseaudio-mgr.h"
typedef struct _SliderMenuItemPrivate SliderMenuItemPrivate;
struct _SliderMenuItemPrivate {
- ActiveSink* a_sink;
+ Device* a_sink;
+ gint index;
+ gchar* name;
+ gboolean mute;
+ pa_cvolume volume;
+ pa_channel_map channel_map;
+ pa_volume_t base_volume;
};
#define SLIDER_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SLIDER_MENU_ITEM_TYPE, SliderMenuItemPrivate))
@@ -39,6 +46,8 @@ static void slider_menu_item_dispose (GObject *object);
static void slider_menu_item_finalize (GObject *object);
static void handle_event (DbusmenuMenuitem * mi, const gchar * name,
GVariant * value, guint timestamp);
+static pa_cvolume slider_menu_item_construct_mono_volume (const pa_cvolume* vol);
+static void slider_menu_item_update_volume (SliderMenuItem* self, gdouble percent);
G_DEFINE_TYPE (SliderMenuItem, slider_menu_item, DBUSMENU_TYPE_MENUITEM);
@@ -63,7 +72,13 @@ slider_menu_item_init (SliderMenuItem *self)
g_debug("Building new Slider Menu Item");
dbusmenu_menuitem_property_set( DBUSMENU_MENUITEM(self),
DBUSMENU_MENUITEM_PROP_TYPE,
- DBUSMENU_VOLUME_MENUITEM_TYPE );
+ DBUSMENU_VOLUME_MENUITEM_TYPE );
+
+ SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self);
+
+ priv->index = NOT_ACTIVE;
+ priv->name = NULL;
+
return;
}
@@ -97,33 +112,122 @@ handle_event (DbusmenuMenuitem * mi,
SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (SLIDER_MENU_ITEM (mi));
gdouble volume_input = g_variant_get_double(input);
//g_debug ("slider menu item about to update volume %f", volume_input);
- active_sink_update_volume (priv->a_sink, volume_input);
- active_sink_ensure_sink_is_unmuted (priv->a_sink);
+ slider_menu_item_update_volume (SLIDER_MENU_ITEM (mi), volume_input);
+ device_ensure_sink_is_unmuted (priv->a_sink);
}
}
}
+
void
-slider_menu_item_update (SliderMenuItem* item,
- gdouble update)
+slider_menu_item_populate (SliderMenuItem* self, const pa_sink_info* update)
+{
+ SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self);
+ priv->name = g_strdup (update->name);
+ priv->index = update->index;
+ priv->volume = slider_menu_item_construct_mono_volume (&update->volume);
+ priv->base_volume = update->base_volume;
+ priv->channel_map = update->channel_map;
+ priv->mute = update->mute;
+
+ pa_volume_t vol = pa_cvolume_max (&update->volume);
+ gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM;
+ GVariant* new_volume = g_variant_new_double (volume_percent);
+ dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self),
+ DBUSMENU_VOLUME_MENUITEM_LEVEL,
+ new_volume);
+ GVariant* new_mute_update = g_variant_new_int32 (update->mute);
+ dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self),
+ DBUSMENU_VOLUME_MENUITEM_MUTE,
+ new_mute_update);
+
+ slider_menu_item_enable (self, TRUE);
+}
+
+// From the UI
+static void
+slider_menu_item_update_volume (SliderMenuItem* self, gdouble percent)
{
- GVariant* new_volume = g_variant_new_double(update);
- dbusmenu_menuitem_property_set_variant(DBUSMENU_MENUITEM(item),
- DBUSMENU_VOLUME_MENUITEM_LEVEL,
- new_volume);
+ pa_cvolume new_volume;
+ pa_cvolume_init(&new_volume);
+ new_volume.channels = 1;
+ pa_volume_t new_volume_value = (pa_volume_t) ((percent * PA_VOLUME_NORM) / 100);
+ pa_cvolume_set(&new_volume, 1, new_volume_value);
+
+ SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self);
+
+ pa_cvolume_set(&priv->volume, priv->channel_map.channels, new_volume_value);
+ pm_update_volume (priv->index, new_volume);
}
+// To the UI
void
-slider_menu_item_enable (SliderMenuItem* item,
- gboolean active)
+slider_menu_item_update (SliderMenuItem* self, const pa_sink_info* update)
{
- dbusmenu_menuitem_property_set_bool( DBUSMENU_MENUITEM(item),
+ SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self);
+
+ priv->volume = slider_menu_item_construct_mono_volume (&update->volume);
+ priv->base_volume = update->base_volume;
+ priv->channel_map = update->channel_map;
+
+ pa_volume_t vol = pa_cvolume_max (&update->volume);
+ gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM;
+
+ GVariant* new_volume = g_variant_new_double (volume_percent);
+ dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self),
+ DBUSMENU_VOLUME_MENUITEM_LEVEL,
+ new_volume);
+ if (priv->mute != update->mute){
+ priv->mute = update->mute;
+ g_debug ("volume menu item - update - mute = %i", update->mute);
+ GVariant* new_mute_update = g_variant_new_int32 (update->mute);
+ dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self),
+ DBUSMENU_VOLUME_MENUITEM_MUTE,
+ new_mute_update);
+ }
+}
+
+/*
+ * Enable/Disabled can be considered the equivalent of whether we have an active
+ * sink or not, let the widget have inherent state.
+ */
+void
+slider_menu_item_enable (SliderMenuItem* self, gboolean active)
+{
+ SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self);
+
+ dbusmenu_menuitem_property_set_bool (DBUSMENU_MENUITEM(self),
DBUSMENU_MENUITEM_PROP_ENABLED,
- active );
+ active);
+ if(active == FALSE){
+ priv->index = NOT_ACTIVE;
+ if(priv->name != NULL){
+ g_free(priv->name);
+ priv->name = NULL;
+ }
+ }
+}
+
+gint
+slider_menu_item_get_sink_index (SliderMenuItem* self)
+{
+ SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self);
+ return priv->index;
+}
+
+static pa_cvolume
+slider_menu_item_construct_mono_volume (const pa_cvolume* vol)
+{
+ pa_cvolume new_volume;
+ pa_cvolume_init(&new_volume);
+ new_volume.channels = 1;
+ pa_volume_t max_vol = pa_cvolume_max(vol);
+ pa_cvolume_set(&new_volume, 1, max_vol);
+ return new_volume;
}
SliderMenuItem*
-slider_menu_item_new (ActiveSink* sink)
+slider_menu_item_new (Device* sink)
{
SliderMenuItem *self = g_object_new(SLIDER_MENU_ITEM_TYPE, NULL);
SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self);
diff --git a/src/slider-menu-item.h b/src/slider-menu-item.h
index f094c71..4375971 100644
--- a/src/slider-menu-item.h
+++ b/src/slider-menu-item.h
@@ -23,7 +23,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include <glib-object.h>
#include <libdbusmenu-glib/menuitem.h>
-#include "active-sink.h"
+#include "device.h"
G_BEGIN_DECLS
@@ -47,10 +47,16 @@ struct _SliderMenuItem {
GType slider_menu_item_get_type (void);
-void slider_menu_item_update(SliderMenuItem* item, gdouble update);
+void slider_menu_item_update(SliderMenuItem* item, const pa_sink_info* update);
void slider_menu_item_enable(SliderMenuItem* item, gboolean active);
+void slider_menu_item_populate (SliderMenuItem* self, const pa_sink_info* update);
+//void
+//active_sink_update (ActiveSink* sink,
+// const pa_sink_info* update)
-SliderMenuItem* slider_menu_item_new (ActiveSink* sink);
+gint slider_menu_item_get_sink_index (SliderMenuItem* self);
+
+SliderMenuItem* slider_menu_item_new (Device* sink);
G_END_DECLS
diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c
index 8d0cc0b..7c817af 100644
--- a/src/sound-service-dbus.c
+++ b/src/sound-service-dbus.c
@@ -29,7 +29,7 @@
#include <libdbusmenu-glib/client.h>
#include "sound-service-dbus.h"
-#include "active-sink.h"
+#include "device.h"
#include "gen-sound-service.xml.h"
#include "dbus-shared-names.h"
@@ -55,7 +55,7 @@ typedef struct _SoundServiceDbusPrivate SoundServiceDbusPrivate;
struct _SoundServiceDbusPrivate {
GDBusConnection* connection;
DbusmenuMenuitem* root_menuitem;
- ActiveSink* active_sink;
+ Device* device;
};
static GDBusNodeInfo * node_info = NULL;
@@ -155,7 +155,7 @@ sound_service_dbus_create_root_item (SoundServiceDbus* self)
paths);
dbusmenu_server_set_root (server, priv->root_menuitem);
g_object_unref (priv->root_menuitem);
- priv->active_sink = active_sink_new (self);
+ priv->device = device_new (self);
return priv->root_menuitem;
}
@@ -272,8 +272,8 @@ bus_method_call (GDBusConnection * connection,
SoundServiceDbusPrivate *priv = SOUND_SERVICE_DBUS_GET_PRIVATE (service);
if (g_strcmp0(method, "GetSoundState") == 0) {
- g_debug("Get state - %i", active_sink_get_state (priv->active_sink));
- retval = g_variant_new ( "(i)", active_sink_get_state (priv->active_sink));
+ g_debug("Get state - %i", device_get_state (priv->device));
+ retval = g_variant_new ( "(i)", device_get_state (priv->device));
}
else if (g_strcmp0(method, "BlacklistMediaPlayer") == 0) {
gboolean blacklist;
diff --git a/src/sound-service.c b/src/sound-service.c
index cfc0b7e..7e6426c 100644
--- a/src/sound-service.c
+++ b/src/sound-service.c
@@ -51,11 +51,11 @@ main:
int
main (int argc, char ** argv)
{
+
g_type_init();
-
- setlocale (LC_ALL, "");
- bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
textdomain (GETTEXT_PACKAGE);
+ bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+ setlocale (LC_ALL, "");
IndicatorService *service = indicator_service_new_version(INDICATOR_SOUND_DBUS_NAME,
INDICATOR_SOUND_DBUS_VERSION);
diff --git a/src/title-menu-item.c b/src/title-menu-item.c
index 702fa24..168bfd9 100644
--- a/src/title-menu-item.c
+++ b/src/title-menu-item.c
@@ -1,4 +1,4 @@
-/* title-menu-item.c generated by valac 0.11.6, the Vala compiler
+/* title-menu-item.c generated by valac 0.11.7, the Vala compiler
* generated from title-menu-item.vala, do not modify */
/*
diff --git a/src/transport-menu-item.c b/src/transport-menu-item.c
index 0cc2850..df1cc14 100644
--- a/src/transport-menu-item.c
+++ b/src/transport-menu-item.c
@@ -1,4 +1,4 @@
-/* transport-menu-item.c generated by valac 0.11.6, the Vala compiler
+/* transport-menu-item.c generated by valac 0.11.7, the Vala compiler
* generated from transport-menu-item.vala, do not modify */
/*
@@ -162,9 +162,9 @@ static void transport_menuitem_real_handle_event (DbusmenuMenuitem* base, const
GVariant* _tmp0_;
GVariant* v;
gboolean _tmp1_;
- gint32 _tmp4_;
+ gint32 _tmp3_;
gint32 input;
- PlayerController* _tmp5_ = NULL;
+ PlayerController* _tmp4_ = NULL;
self = (TransportMenuitem*) base;
g_return_if_fail (name != NULL);
g_return_if_fail (input_value != NULL);
@@ -173,16 +173,14 @@ static void transport_menuitem_real_handle_event (DbusmenuMenuitem* base, const
_tmp1_ = g_variant_is_of_type (input_value, G_VARIANT_TYPE_VARIANT);
if (_tmp1_) {
GVariant* _tmp2_ = NULL;
- GVariant* _tmp3_;
_tmp2_ = g_variant_get_variant (input_value);
- _tmp3_ = _tmp2_;
_g_variant_unref0 (v);
- v = _tmp3_;
+ v = _tmp2_;
}
- _tmp4_ = g_variant_get_int32 (v);
- input = _tmp4_;
- _tmp5_ = player_item_get_owner ((PlayerItem*) self);
- mpris2_controller_transport_update (_tmp5_->mpris_bridge, (TransportAction) input);
+ _tmp3_ = g_variant_get_int32 (v);
+ input = _tmp3_;
+ _tmp4_ = player_item_get_owner ((PlayerItem*) self);
+ mpris2_controller_transport_update (_tmp4_->mpris_bridge, (TransportAction) input);
_g_variant_unref0 (v);
}
diff --git a/src/voip-input-menu-item.c b/src/voip-input-menu-item.c
index a742654..a92f91c 100644
--- a/src/voip-input-menu-item.c
+++ b/src/voip-input-menu-item.c
@@ -28,7 +28,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
typedef struct _VoipInputMenuItemPrivate VoipInputMenuItemPrivate;
struct _VoipInputMenuItemPrivate {
- ActiveSink* a_sink;
+ Device* a_sink;
pa_cvolume volume;
gint mute;
guint32 volume_steps;
@@ -129,8 +129,6 @@ handle_event (DbusmenuMenuitem * mi,
if (priv->mute == 1) {
pm_update_mic_mute (priv->source_index, 0);
}
- //active_sink_update_volume (priv->a_sink, volume_input);
- //active_sink_ensure_sink_is_unmuted (priv->a_sink);
}
}
}
@@ -268,7 +266,7 @@ voip_input_menu_item_enable (VoipInputMenuItem* item,
}
VoipInputMenuItem*
-voip_input_menu_item_new (ActiveSink* sink)
+voip_input_menu_item_new (Device* sink)
{
VoipInputMenuItem *self = g_object_new(VOIP_INPUT_MENU_ITEM_TYPE, NULL);
VoipInputMenuItemPrivate* priv = VOIP_INPUT_MENU_ITEM_GET_PRIVATE (self);
diff --git a/src/voip-input-menu-item.h b/src/voip-input-menu-item.h
index 6f4ed85..30ada5a 100644
--- a/src/voip-input-menu-item.h
+++ b/src/voip-input-menu-item.h
@@ -22,7 +22,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include <glib.h>
#include <pulse/pulseaudio.h>
#include <libdbusmenu-glib/menuitem.h>
-#include "active-sink.h"
+#include "device.h"
G_BEGIN_DECLS
@@ -62,7 +62,7 @@ gint voip_input_menu_item_get_sink_input_index (VoipInputMenuItem* item);
void voip_input_menu_item_deactivate_source (VoipInputMenuItem* item, gboolean visible);
void voip_input_menu_item_deactivate_voip_client (VoipInputMenuItem* item);
-VoipInputMenuItem* voip_input_menu_item_new (ActiveSink* sink);
+VoipInputMenuItem* voip_input_menu_item_new (Device* sink);
G_END_DECLS
diff --git a/src/voip-input-widget.c b/src/voip-input-widget.c
index fc295ce..6878361 100644
--- a/src/voip-input-widget.c
+++ b/src/voip-input-widget.c
@@ -80,6 +80,8 @@ voip_input_widget_init (VoipInputWidget *self)
priv->ido_voip_input_slider = ido_scale_menu_item_new_with_range ("VOLUME", IDO_RANGE_STYLE_DEFAULT, 0, 0, 100, 1);
g_object_ref (priv->ido_voip_input_slider);
+ ido_scale_menu_item_set_primary_label (IDO_SCALE_MENU_ITEM(priv->ido_voip_input_slider), "VOIP");
+
ido_scale_menu_item_set_style (IDO_SCALE_MENU_ITEM (priv->ido_voip_input_slider), IDO_SCALE_MENU_ITEM_STYLE_IMAGE);
g_object_set(priv->ido_voip_input_slider, "reverse-scroll-events", TRUE, NULL);
@@ -95,7 +97,7 @@ voip_input_widget_init (VoipInputWidget *self)
g_signal_connect(priv->ido_voip_input_slider, "slider-released", G_CALLBACK(voip_input_widget_slider_released), self);
GtkWidget* primary_image = ido_scale_menu_item_get_primary_image((IdoScaleMenuItem*)priv->ido_voip_input_slider);
- GIcon * primary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-none-panel");
+ GIcon * primary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-zero-panel");
gtk_image_set_from_gicon(GTK_IMAGE(primary_image), primary_gicon, GTK_ICON_SIZE_MENU);
g_object_unref(primary_gicon);
diff --git a/src/volume-widget.c b/src/volume-widget.c
index 5c842dc..f638bd4 100644
--- a/src/volume-widget.c
+++ b/src/volume-widget.c
@@ -83,7 +83,8 @@ volume_widget_init (VolumeWidget *self)
priv->ido_volume_slider = ido_scale_menu_item_new_with_range ("VOLUME", IDO_RANGE_STYLE_DEFAULT, 0, 0, 100, 1);
g_object_ref (priv->ido_volume_slider);
- ido_scale_menu_item_set_style (IDO_SCALE_MENU_ITEM (priv->ido_volume_slider), IDO_SCALE_MENU_ITEM_STYLE_IMAGE);
+ ido_scale_menu_item_set_primary_label (IDO_SCALE_MENU_ITEM(priv->ido_volume_slider), "VOLUME");
+ ido_scale_menu_item_set_style (IDO_SCALE_MENU_ITEM (priv->ido_volume_slider), IDO_SCALE_MENU_ITEM_STYLE_IMAGE);
g_object_set(priv->ido_volume_slider, "reverse-scroll-events", TRUE, NULL);
g_signal_connect (priv->ido_volume_slider,
@@ -128,11 +129,11 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property,
GVariant* value, gpointer userdata)
{
g_return_if_fail (IS_VOLUME_WIDGET (userdata));
- g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) );
VolumeWidget* mitem = VOLUME_WIDGET(userdata);
VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem);
- //g_debug("scrub-widget::property_update for prop %s", property);
+
if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_LEVEL, property) == 0){
+ g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) );
if(priv->grabbed == FALSE){
GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
GtkRange *range = (GtkRange*)slider;
@@ -141,6 +142,27 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property,
update_accessible_desc(priv->indicator);
}
}
+ if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_MUTE, property) == 0){
+ g_debug ("volume widget - mute update ");
+ if(priv->grabbed == FALSE){
+ GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
+ GtkRange *range = (GtkRange*)slider;
+ gint update = g_variant_get_int32 (value);
+ gdouble level;
+
+ g_debug ("volume widget - mute update %i", update);
+
+ if (update == 1){
+ level = 0;
+ }
+ else{
+ level = g_variant_get_double (dbusmenu_menuitem_property_get_variant (priv->twin_item,
+ DBUSMENU_VOLUME_MENUITEM_LEVEL));
+ }
+ gtk_range_set_value(range, level);
+ g_debug ("volume-widget - update mute with value %i", update);
+ }
+ }
}
static void
@@ -154,9 +176,15 @@ volume_widget_set_twin_item(VolumeWidget* self,
G_CALLBACK(volume_widget_property_update), self);
gdouble initial_level = g_variant_get_double (dbusmenu_menuitem_property_get_variant(twin_item,
DBUSMENU_VOLUME_MENUITEM_LEVEL));
+ gint initial_mute = g_variant_get_int32 (dbusmenu_menuitem_property_get_variant(twin_item,
+ DBUSMENU_VOLUME_MENUITEM_MUTE));
+
//g_debug("volume_widget_set_twin_item initial level = %f", initial_level);
GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
GtkRange *range = (GtkRange*)slider;
+ if(initial_mute == 1){
+ initial_level = 0;
+ }
gtk_range_set_value(range, initial_level);
update_accessible_desc(priv->indicator);
}
@@ -188,7 +216,10 @@ volume_widget_value_changed_cb (GtkRange *range, gpointer user_data)
GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100);
//g_debug ("value changed %f", gtk_range_get_value(GTK_RANGE(slider)));
- if(current_value == 0 || current_value == 100){
+ gint mute = g_variant_get_int32 (dbusmenu_menuitem_property_get_variant (priv->twin_item,
+ DBUSMENU_VOLUME_MENUITEM_MUTE));
+
+ if((current_value == 0 && mute != 1) || current_value == 100){
volume_widget_update(mitem, current_value);
}
diff --git a/vapi/config.vapi b/vapi/config.vapi
new file mode 100644
index 0000000..4be6d11
--- /dev/null
+++ b/vapi/config.vapi
@@ -0,0 +1,8 @@
+[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "../config.h")]
+namespace Config {
+ public const string GETTEXT_PACKAGE;
+ public const string LOCALEDIR;
+ public const string PKGDATADIR;
+ public const string PACKAGE_NAME;
+ public const string PACKAGE_VERSION;
+}