[gthumb] media viewer: save and restore the volume level
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] media viewer: save and restore the volume level
- Date: Thu, 2 Aug 2012 12:34:49 +0000 (UTC)
commit b15c33c32676eff56d900336b9559f167718a067
Author: Paolo Bacchilega <paobac src gnome org>
Date: Tue May 15 23:42:04 2012 +0200
media viewer: save and restore the volume level
[new feature]
...org.gnome.gthumb.gstreamer-tools.gschema.xml.in | 3 ++
extensions/gstreamer_tools/gth-media-viewer-page.c | 28 +++++++++++++++++++-
extensions/gstreamer_tools/preferences.h | 1 +
3 files changed, 31 insertions(+), 1 deletions(-)
---
diff --git a/data/org.gnome.gthumb.gstreamer-tools.gschema.xml.in b/data/org.gnome.gthumb.gstreamer-tools.gschema.xml.in
index bb8438b..7626765 100644
--- a/data/org.gnome.gthumb.gstreamer-tools.gschema.xml.in
+++ b/data/org.gnome.gthumb.gstreamer-tools.gschema.xml.in
@@ -22,6 +22,9 @@
<key name="screenshot-location" type="s">
<default>'file://~'</default>
</key>
+ <key name="volume" type="i">
+ <default>100</default>
+ </key>
</schema>
</schemalist>
diff --git a/extensions/gstreamer_tools/gth-media-viewer-page.c b/extensions/gstreamer_tools/gth-media-viewer-page.c
index 4a61775..c970566 100644
--- a/extensions/gstreamer_tools/gth-media-viewer-page.c
+++ b/extensions/gstreamer_tools/gth-media-viewer-page.c
@@ -29,6 +29,7 @@
#include <extensions/gstreamer_utils/gstreamer-utils.h>
#include "actions.h"
#include "gth-media-viewer-page.h"
+#include "preferences.h"
#define GET_WIDGET(x) (_gtk_builder_get_widget (self->priv->builder, (x)))
@@ -845,6 +846,20 @@ remove_fullscreen_toolbar (GthMediaViewerPage *self)
static void
+save_volume (GthMediaViewerPage *self)
+{
+ GSettings *settings;
+ double volume;
+
+ settings = g_settings_new (GTHUMB_GSTREAMER_TOOLS_SCHEMA);
+ g_object_get (self->priv->playbin, "volume", &volume, NULL);
+ g_settings_set_int (settings, PREF_GSTREAMER_TOOLS_VOLUME, (int) (volume * 100.0));
+
+ g_object_unref (settings);
+}
+
+
+static void
gth_media_viewer_page_real_deactivate (GthViewerPage *base)
{
GthMediaViewerPage *self;
@@ -862,6 +877,7 @@ gth_media_viewer_page_real_deactivate (GthViewerPage *base)
}
if (self->priv->playbin != NULL) {
+ save_volume (self);
gst_element_set_state (self->priv->playbin, GST_STATE_NULL);
gst_object_unref (GST_OBJECT (self->priv->playbin));
self->priv->playbin = NULL;
@@ -1069,12 +1085,21 @@ playbin_notify_volume_cb (GObject *playbin,
static void
create_playbin (GthMediaViewerPage *self)
{
- GstBus *bus;
+ GSettings *settings;
+ GstBus *bus;
if (self->priv->playbin != NULL)
return;
self->priv->playbin = gst_element_factory_make ("playbin", "playbin");
+
+ settings = g_settings_new (GTHUMB_GSTREAMER_TOOLS_SCHEMA);
+ g_object_set (self->priv->playbin,
+ "volume",
+ (double) g_settings_get_int (settings, PREF_GSTREAMER_TOOLS_VOLUME) / 100.0,
+ NULL);
+ g_object_unref (settings);
+
g_signal_connect (self->priv->playbin, "notify::volume", G_CALLBACK (playbin_notify_volume_cb), self);
bus = gst_pipeline_get_bus (GST_PIPELINE (self->priv->playbin));
@@ -1397,6 +1422,7 @@ gth_media_viewer_page_finalize (GObject *obj)
}
if (self->priv->playbin != NULL) {
+ save_volume (self);
gst_element_set_state (self->priv->playbin, GST_STATE_NULL);
gst_object_unref (GST_OBJECT (self->priv->playbin));
self->priv->playbin = NULL;
diff --git a/extensions/gstreamer_tools/preferences.h b/extensions/gstreamer_tools/preferences.h
index e83f34d..5a0b641 100644
--- a/extensions/gstreamer_tools/preferences.h
+++ b/extensions/gstreamer_tools/preferences.h
@@ -29,5 +29,6 @@
/* keys */
#define PREF_GSTREAMER_TOOLS_SCREESHOT_LOCATION "screenshot-location"
+#define PREF_GSTREAMER_TOOLS_VOLUME "volume"
#endif /* PREFERENCES_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]