[Xfce4-commits] [panel-plugins/xfce4-pulseaudio-plugin] 01/04: Allow volume object use plugin settings.
noreply at xfce.org
noreply at xfce.org
Tue Apr 7 02:06:10 CEST 2015
This is an automated email from the git hooks/post-receive script.
andrzejr pushed a commit to branch master
in repository panel-plugins/xfce4-pulseaudio-plugin.
commit af38716000868b2f5635d55766a7a51bfa15f295
Author: Andrzej <ndrwrdck at gmail.com>
Date: Mon Apr 6 22:34:52 2015 +0100
Allow volume object use plugin settings.
for implementing pa-specific settings.
---
panel-plugin/pulseaudio-plugin.c | 2 +-
panel-plugin/pulseaudio-volume.c | 55 +++++++++++++++++++++++++-------------
panel-plugin/pulseaudio-volume.h | 5 ++--
3 files changed, 41 insertions(+), 21 deletions(-)
diff --git a/panel-plugin/pulseaudio-plugin.c b/panel-plugin/pulseaudio-plugin.c
index c75f897..156eaff 100644
--- a/panel-plugin/pulseaudio-plugin.c
+++ b/panel-plugin/pulseaudio-plugin.c
@@ -348,7 +348,7 @@ pulseaudio_plugin_construct (XfcePanelPlugin *plugin)
#endif
/* volume controller */
- pulseaudio_plugin->volume = pulseaudio_volume_new ();
+ pulseaudio_plugin->volume = pulseaudio_volume_new (pulseaudio_plugin->config);
/* instantiate a button box */
pulseaudio_plugin->button = pulseaudio_button_new (pulseaudio_plugin,
diff --git a/panel-plugin/pulseaudio-volume.c b/panel-plugin/pulseaudio-volume.c
index 626a126..688ea29 100644
--- a/panel-plugin/pulseaudio-volume.c
+++ b/panel-plugin/pulseaudio-volume.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014 Andrzej <ndrwrdck at gmail.com>
+/* Copyright (c) 2014-2015 Andrzej <ndrwrdck at gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -32,19 +32,25 @@
#include <pulse/pulseaudio.h>
#include <pulse/glib-mainloop.h>
+#include "pulseaudio-config.h"
#include "pulseaudio-debug.h"
#include "pulseaudio-volume.h"
static void pulseaudio_volume_finalize (GObject *object);
static void pulseaudio_volume_connect (PulseaudioVolume *volume);
-static gdouble pulseaudio_volume_v2d (pa_volume_t vol);
+static gdouble pulseaudio_volume_v2d (PulseaudioVolume *volume,
+ pa_volume_t vol);
+static pa_volume_t pulseaudio_volume_d2v (PulseaudioVolume *volume,
+ gdouble vol);
struct _PulseaudioVolume
{
GObject __parent__;
+ PulseaudioConfig *config;
+
pa_glib_mainloop *pa_mainloop;
pa_context *pa_context;
gboolean connected;
@@ -118,6 +124,8 @@ pulseaudio_volume_finalize (GObject *object)
{
PulseaudioVolume *volume = PULSEAUDIO_VOLUME (object);
+ volume->config = NULL;
+
pa_glib_mainloop_free (volume->pa_mainloop);
(*G_OBJECT_CLASS (pulseaudio_volume_parent_class)->finalize) (object);
@@ -140,7 +148,7 @@ pulseaudio_volume_sink_info_cb (pa_context *context,
if (i == NULL) return;
muted = (gboolean) i->mute;
- vol = pulseaudio_volume_v2d (i->volume.values[0]);
+ vol = pulseaudio_volume_v2d (volume, i->volume.values[0]);
if (volume->muted != muted)
{
@@ -294,29 +302,35 @@ pulseaudio_volume_connect (PulseaudioVolume *volume)
static gdouble
-pulseaudio_volume_v2d (pa_volume_t vol)
+pulseaudio_volume_v2d (PulseaudioVolume *volume,
+ pa_volume_t pa_volume)
{
- gdouble volume;
+ gdouble vol;
- volume = (gdouble) vol - PA_VOLUME_MUTED;
- volume /= (gdouble) (PA_VOLUME_NORM - PA_VOLUME_MUTED);
+ g_return_val_if_fail (IS_PULSEAUDIO_VOLUME (volume), 0.0);
+
+ vol = (gdouble) pa_volume - PA_VOLUME_MUTED;
+ vol /= (gdouble) (PA_VOLUME_NORM - PA_VOLUME_MUTED);
/* for safety */
- volume = MIN (MAX (volume, 0.0), 1.0);
- return volume;
+ vol = MIN (MAX (vol, 0.0), 1.0);
+ return vol;
}
static pa_volume_t
-pulseaudio_volume_d2v (gdouble vol)
+pulseaudio_volume_d2v (PulseaudioVolume *volume,
+ gdouble vol)
{
- gdouble volume;
+ gdouble pa_volume;
- volume = (PA_VOLUME_NORM - PA_VOLUME_MUTED) * vol;
- volume = (pa_volume_t) volume + PA_VOLUME_MUTED;
+ g_return_val_if_fail (IS_PULSEAUDIO_VOLUME (volume), PA_VOLUME_MUTED);
+
+ pa_volume = (PA_VOLUME_NORM - PA_VOLUME_MUTED) * vol;
+ pa_volume = (pa_volume_t) pa_volume + PA_VOLUME_MUTED;
/* for safety */
- volume = MIN (MAX (volume, PA_VOLUME_MUTED), PA_VOLUME_NORM);
- return volume;
+ pa_volume = MIN (MAX (pa_volume, PA_VOLUME_MUTED), PA_VOLUME_NORM);
+ return pa_volume;
}
@@ -412,7 +426,7 @@ pulseaudio_volume_set_volume_cb2 (pa_context *context,
if (i == NULL) return;
//pulseaudio_debug ("*** %s", pa_cvolume_snprint (st, sizeof (st), &i->volume));
- pa_cvolume_set (&i->volume, 1, pulseaudio_volume_d2v (volume->volume));
+ pa_cvolume_set (&i->volume, 1, pulseaudio_volume_d2v (volume, volume->volume));
pa_context_set_sink_volume_by_index (context, i->index, &i->volume, pulseaudio_volume_sink_volume_changed, volume);
}
@@ -448,9 +462,14 @@ pulseaudio_volume_set_volume (PulseaudioVolume *volume,
PulseaudioVolume *
-pulseaudio_volume_new (void)
+pulseaudio_volume_new (PulseaudioConfig *config)
{
- PulseaudioVolume *volume = g_object_new (TYPE_PULSEAUDIO_VOLUME, NULL);
+ PulseaudioVolume *volume;
+
+ g_return_val_if_fail (IS_PULSEAUDIO_CONFIG (config), NULL);
+
+ volume = g_object_new (TYPE_PULSEAUDIO_VOLUME, NULL);
+ volume->config = config;
return volume;
}
diff --git a/panel-plugin/pulseaudio-volume.h b/panel-plugin/pulseaudio-volume.h
index 1fef9d1..92c4da1 100644
--- a/panel-plugin/pulseaudio-volume.h
+++ b/panel-plugin/pulseaudio-volume.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014 Andrzej <ndrwrdck at gmail.com>
+/* Copyright (c) 2014-2015 Andrzej <ndrwrdck at gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -19,6 +19,7 @@
#define __PULSEAUDIO_VOLUME_H__
#include <glib-object.h>
+#include "pulseaudio-config.h"
G_BEGIN_DECLS
@@ -34,7 +35,7 @@ typedef struct _PulseaudioVolumeClass PulseaudioVolumeClass;
GType pulseaudio_volume_get_type (void) G_GNUC_CONST;
-PulseaudioVolume *pulseaudio_volume_new ();
+PulseaudioVolume *pulseaudio_volume_new (PulseaudioConfig *config);
gdouble pulseaudio_volume_get_volume (PulseaudioVolume *volume);
void pulseaudio_volume_set_volume (PulseaudioVolume *volume,
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list