summaryrefslogtreecommitdiff
path: root/mate-volume-control
diff options
context:
space:
mode:
Diffstat (limited to 'mate-volume-control')
-rw-r--r--mate-volume-control/Makefile.am99
-rw-r--r--mate-volume-control/applet-main.c14
-rw-r--r--mate-volume-control/dialog-main.c2
-rw-r--r--mate-volume-control/gvc-applet.c22
-rw-r--r--mate-volume-control/gvc-balance-bar.c2
-rw-r--r--mate-volume-control/gvc-channel-bar.c86
-rw-r--r--mate-volume-control/gvc-channel-bar.h4
-rw-r--r--mate-volume-control/gvc-level-bar.c4
-rw-r--r--mate-volume-control/gvc-mixer-dialog.c65
-rw-r--r--mate-volume-control/gvc-sound-theme-chooser.c1
-rw-r--r--mate-volume-control/gvc-stream-applet-icon.c101
-rw-r--r--mate-volume-control/gvc-stream-status-icon.c36
-rw-r--r--mate-volume-control/meson.build154
-rw-r--r--mate-volume-control/org.mate.applets.GvcApplet.mate-panel-applet.desktop.in.in3
-rw-r--r--mate-volume-control/org.mate.panel.applet.GvcAppletFactory.service.in1
-rw-r--r--mate-volume-control/status-icon-main.c2
16 files changed, 514 insertions, 82 deletions
diff --git a/mate-volume-control/Makefile.am b/mate-volume-control/Makefile.am
index 06eae15..881b78d 100644
--- a/mate-volume-control/Makefile.am
+++ b/mate-volume-control/Makefile.am
@@ -3,15 +3,11 @@ bin_PROGRAMS = \
mate-volume-control-status-icon \
mate-volume-control \
$(NULL)
-else
+else !ENABLE_STATUSICON
bin_PROGRAMS = \
mate-volume-control \
$(NULL)
-endif
-
-if ENABLE_PANELAPPLET
-libexec_PROGRAMS = mate-volume-control-applet
-endif
+endif !ENABLE_STATUSICON
AM_CPPFLAGS = \
$(WARN_CFLAGS) \
@@ -24,35 +20,40 @@ AM_CPPFLAGS = \
-I$(srcdir) \
$(NULL)
-if ENABLE_PANELAPPLET
-APPLET_LOCATION = $(libexecdir)/mate-volume-control-applet
+applets_in_files = org.mate.applets.GvcApplet.mate-panel-applet.desktop.in
+service_in_files = org.mate.panel.applet.GvcAppletFactory.service.in
+if ENABLE_PANELAPPLET
appletsdir = $(datadir)/mate-panel/applets
-applets_in_files = org.mate.applets.GvcApplet.mate-panel-applet.desktop.in
applets_DATA = $(applets_in_files:.mate-panel-applet.desktop.in=.mate-panel-applet)
-$(applets_in_files): $(applets_in_files).in Makefile
- $(AM_V_GEN)sed \
- -e "s|\@LOCATION\@|$(APPLET_LOCATION)|" \
- $< > $@
-
-$(applets_DATA): $(applets_in_files) Makefile
- $(AM_V_GEN) $(MSGFMT) --desktop --keyword=Name --keyword=Description --template $< -d $(top_srcdir)/po -o $@
-
+if IN_PROCESS
+APPLET_LOCATION = $(libdir)/libmate-volume-control-applet.so
+mate_volume_control_applet_libdir= $(libdir)
+mate_volume_control_applet_lib_LTLIBRARIES=libmate-volume-control-applet.la
+IN_PROCESS = true
+else !IN_PROCESS
+APPLET_LOCATION = $(libexecdir)/mate-volume-control-applet
servicedir = $(datadir)/dbus-1/services
-service_in_files = org.mate.panel.applet.GvcAppletFactory.service.in
service_DATA = $(service_in_files:.service.in=.service)
+IN_PROCESS = false
-org.mate.panel.applet.GvcAppletFactory.service: $(service_in_files)
+$(service_in_files:.service.in=.service): $(service_in_files)
$(AM_V_GEN)sed \
-e "s|\@LOCATION\@|$(APPLET_LOCATION)|" \
$< > $@
+endif !IN_PROCESS
-EXTRA_DIST = \
- $(applets_in_files).in \
- $(service_in_files)
+$(applets_in_files): $(applets_in_files).in Makefile
+ $(AM_V_GEN)sed \
+ -e "s|\@APPLET_LOCATION\@|$(APPLET_LOCATION)|" \
+ -e "s|\@IN_PROCESS\@|$(IN_PROCESS)|" \
+ $< > $@
+
+$(applets_DATA): $(applets_in_files) Makefile
+ $(AM_V_GEN) $(MSGFMT) --desktop --keyword=Name --keyword=Description --template $< -d $(top_srcdir)/po -o $@
-endif
+endif ENABLE_PANELAPPLET
noinst_LTLIBRARIES = libmatevolumecontrol.la
libmatevolumecontrol_la_SOURCES = \
@@ -76,9 +77,43 @@ mate_volume_control_status_icon_SOURCES = \
$(NULL)
mate_volume_control_status_icon_CFLAGS = $(WARN_CFLAGS)
-endif
+endif ENABLE_STATUSICON
if ENABLE_PANELAPPLET
+if IN_PROCESS
+libmate_volume_control_applet_la_LDFLAGS = \
+ -module -avoid-version \
+ $(WARN_LDFLAGS) \
+ $(AM_LDFLAGS) \
+ $(NULL)
+
+libmate_volume_control_applet_la_SOURCES = \
+ gvc-stream-applet-icon.h \
+ gvc-stream-applet-icon.c \
+ gvc-applet.h \
+ gvc-applet.c \
+ applet-main.c \
+ $(NULL)
+
+libmate_volume_control_applet_la_CFLAGS = $(WARN_CFLAGS)
+
+libmate_volume_control_applet_la_LIBADD = \
+ -lm \
+ libmatevolumecontrol.la \
+ $(MATE_APPLETS4_CFLAGS) \
+ $(VOLUME_CONTROL_LIBS) \
+ $(NULL)
+
+if ENABLE_WAYLAND
+libmate_volume_control_applet_la_LIBADD += \
+ $(WAYLAND_LIBS)
+
+AM_CPPFLAGS += \
+ $(WAYLAND_CFLAGS)
+endif ENABLE_WAYLAND
+
+else !IN_PROCESS
+libexec_PROGRAMS = mate-volume-control-applet
mate_volume_control_applet_LDADD = \
-lm \
libmatevolumecontrol.la \
@@ -93,9 +128,16 @@ mate_volume_control_applet_SOURCES = \
gvc-applet.c \
applet-main.c \
$(NULL)
-
mate_volume_control_applet_CFLAGS = $(WARN_CFLAGS)
-endif
+
+mate_volume_control_applet_LDFLAGS = \
+ -module -avoid-version \
+ $(WARN_LDFLAGS) \
+ $(AM_LDFLAGS) \
+ $(NULL)
+
+endif !IN_PROCESS
+endif ENABLE_PANELAPPLET
mate_volume_control_LDADD = \
-lm \
@@ -128,11 +170,14 @@ BUILT_SOURCES = \
CLEANFILES = \
$(applets_in_files) \
- $(BUILT_SOURCES) \
$(NULL)
MAINTAINERCLEANFILES = \
*~ \
Makefile.in
+EXTRA_DIST = \
+ $(applets_in_files).in \
+ $(service_in_files)
+
-include $(top_srcdir)/git.mk
diff --git a/mate-volume-control/applet-main.c b/mate-volume-control/applet-main.c
index 32a42bc..24dca77 100644
--- a/mate-volume-control/applet-main.c
+++ b/mate-volume-control/applet-main.c
@@ -24,7 +24,7 @@
#include "config.h"
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
@@ -42,10 +42,6 @@ applet_main (MatePanelApplet* applet_widget)
GvcApplet *applet;
GApplication *app = NULL;
- bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
-
app = g_application_new (GVC_APPLET_DBUS_NAME, G_APPLICATION_FLAGS_NONE);
if (!g_application_register (app, NULL, &error)) {
@@ -87,9 +83,17 @@ applet_factory (MatePanelApplet* applet, const char* iid, gpointer data)
return retval;
}
+#ifdef IN_PROCESS
/* needed by mate-panel applet library */
+MATE_PANEL_APPLET_IN_PROCESS_FACTORY("GvcAppletFactory",
+ PANEL_TYPE_APPLET,
+ "Volume Control applet",
+ applet_factory,
+ NULL)
+#else
MATE_PANEL_APPLET_OUT_PROCESS_FACTORY("GvcAppletFactory",
PANEL_TYPE_APPLET,
"Volume Control applet",
applet_factory,
NULL)
+#endif
diff --git a/mate-volume-control/dialog-main.c b/mate-volume-control/dialog-main.c
index b213b3d..c731261 100644
--- a/mate-volume-control/dialog-main.c
+++ b/mate-volume-control/dialog-main.c
@@ -192,7 +192,7 @@ main (int argc, char **argv)
{ "debug", 'd', 0, G_OPTION_ARG_NONE, &debug, N_("Enable debug"), NULL },
{ "page", 'p', 0, G_OPTION_ARG_STRING, &page, N_("Startup page"), "effects|hardware|input|output|applications" },
{ "version", 'v', 0, G_OPTION_ARG_NONE, &show_version, N_("Version of this application"), NULL },
- { NULL }
+ { NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL }
};
bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
diff --git a/mate-volume-control/gvc-applet.c b/mate-volume-control/gvc-applet.c
index 3a08978..93e4623 100644
--- a/mate-volume-control/gvc-applet.c
+++ b/mate-volume-control/gvc-applet.c
@@ -25,7 +25,7 @@
#include <string.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
@@ -508,14 +508,11 @@ menu_activate_open_volume_control (GtkAction *action, GvcApplet *applet)
gboolean
gvc_applet_fill (GvcApplet *applet, MatePanelApplet* applet_widget)
{
- GdkEventMask event_mask;
- GdkWindow *window;
-
+#ifndef IN_PROCESS
g_set_application_name (_("Volume Control Applet"));
gtk_window_set_default_icon_name (APPLET_ICON);
-
mate_panel_applet_set_flags (applet_widget, MATE_PANEL_APPLET_EXPAND_MINOR);
-
+#endif
applet->priv->applet = applet_widget;
/*FIXME: We haved to set this up BEFORE packing in icons. find a way to update this when the applet is moved that works*/
switch (mate_panel_applet_get_orient (applet->priv->applet)) {
@@ -545,16 +542,11 @@ gvc_applet_fill (GvcApplet *applet, MatePanelApplet* applet_widget)
gtk_container_add (GTK_CONTAINER (applet->priv->applet), GTK_WIDGET (applet->priv->box));
gtk_widget_show_all (GTK_WIDGET (applet->priv->applet));
- /* Enable 'scroll-event' signal to get through */
- window = gtk_widget_get_window (GTK_WIDGET (applet->priv->icon_input));
- event_mask = gdk_window_get_events (window);
- gdk_window_set_events (window, event_mask | GDK_SCROLL_MASK);
-
- window = gtk_widget_get_window (GTK_WIDGET (applet->priv->icon_output));
- event_mask = gdk_window_get_events (window);
- gdk_window_set_events (window, event_mask | GDK_SCROLL_MASK);
+ /* Enable 'scroll-event' signal to be received */
+ gtk_widget_add_events (GTK_WIDGET(applet->priv->icon_input), GDK_SCROLL_MASK);
+ gtk_widget_add_events (GTK_WIDGET(applet->priv->icon_output), GDK_SCROLL_MASK);
- /* Update icons on size/orientation changes */
+ /* Update icons on size/orientation changes*/
g_object_connect (applet->priv->applet,
"signal::change_size", gvc_applet_set_size, applet,
"signal::change_orient", gvc_applet_set_orient, applet,
diff --git a/mate-volume-control/gvc-balance-bar.c b/mate-volume-control/gvc-balance-bar.c
index 19370ff..633fd17 100644
--- a/mate-volume-control/gvc-balance-bar.c
+++ b/mate-volume-control/gvc-balance-bar.c
@@ -236,7 +236,7 @@ find_stream_lfe_channel (MateMixerStreamControl *control)
static void
gvc_balance_bar_set_control (GvcBalanceBar *bar, MateMixerStreamControl *control)
{
- g_return_if_fail (GVC_BALANCE_BAR (bar));
+ g_return_if_fail (GVC_IS_BALANCE_BAR (bar));
g_return_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control));
if (bar->priv->control != NULL) {
diff --git a/mate-volume-control/gvc-channel-bar.c b/mate-volume-control/gvc-channel-bar.c
index e787474..1f57098 100644
--- a/mate-volume-control/gvc-channel-bar.c
+++ b/mate-volume-control/gvc-channel-bar.c
@@ -25,7 +25,7 @@
#include <sys/param.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
@@ -52,6 +52,7 @@ struct _GvcChannelBarPrivate
gboolean show_icons;
gboolean show_mute;
gboolean show_marks;
+ gboolean show_mark_text;
gboolean extended;
GtkSizeGroup *size_group;
gboolean symmetric;
@@ -67,6 +68,7 @@ enum {
PROP_SHOW_ICONS,
PROP_SHOW_MUTE,
PROP_SHOW_MARKS,
+ PROP_SHOW_MARK_TEXT,
PROP_EXTENDED,
PROP_NAME,
PROP_ICON_NAME,
@@ -287,6 +289,28 @@ update_layout (GvcChannelBar *bar)
}
static void
+update_scale_size (GvcChannelBar *bar)
+{
+ gdouble normal_volume;
+ gdouble maximum_volume;
+ int calculated_scale_size = SCALE_SIZE;
+
+ if (bar->priv->extended && bar->priv->control != NULL)
+ {
+ normal_volume = mate_mixer_stream_control_get_normal_volume (bar->priv->control);
+ maximum_volume = mate_mixer_stream_control_get_max_volume (bar->priv->control);
+ calculated_scale_size = (maximum_volume / normal_volume) * SCALE_SIZE;
+ }
+
+ if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL)
+ gtk_widget_set_size_request (bar->priv->scale,
+ -1, calculated_scale_size);
+ else
+ gtk_widget_set_size_request (bar->priv->scale,
+ calculated_scale_size, -1);
+}
+
+static void
update_marks (GvcChannelBar *bar)
{
gdouble base;
@@ -307,7 +331,11 @@ update_marks (GvcChannelBar *bar)
return;
if (base < normal) {
- gchar *str = g_strdup_printf ("<small>%s</small>", C_("volume", "Unamplified"));
+ gchar *str = NULL;
+
+ if (bar->priv->show_mark_text)
+ str = g_strdup_printf ("<small>%s</small>",
+ C_("volume", "Unamplified"));
gtk_scale_add_mark (GTK_SCALE (bar->priv->scale),
base,
@@ -320,7 +348,11 @@ update_marks (GvcChannelBar *bar)
/* Only show 100% mark if the scale is extended beyond 100% and
* there is no unamplified mark or it is below the normal volume */
if (bar->priv->extended && (base == normal || base < normal)) {
- gchar *str = g_strdup_printf ("<small>%s</small>", C_("volume", "100%"));
+ gchar *str = NULL;
+
+ if (bar->priv->show_mark_text)
+ str = g_strdup_printf ("<small>%s</small>",
+ C_("volume", "100%"));
gtk_scale_add_mark (GTK_SCALE (bar->priv->scale),
normal,
@@ -369,18 +401,11 @@ update_adjustment_value (GvcChannelBar *bar)
else
value = mate_mixer_stream_control_get_volume (bar->priv->control);
- gdouble maximum = gtk_adjustment_get_upper (bar->priv->adjustment);
- gdouble minimum = gtk_adjustment_get_lower (bar->priv->adjustment);
- gdouble range = maximum - minimum;
-
- /* round value to nearest hundreth of the range */
- gdouble new_value = minimum + round (((value - minimum) / range) * 100) * (range / 100);
-
g_signal_handlers_block_by_func (G_OBJECT (bar->priv->adjustment),
on_adjustment_value_changed,
bar);
- gtk_adjustment_set_value (bar->priv->adjustment, new_value);
+ gtk_adjustment_set_value (bar->priv->adjustment, value);
g_signal_handlers_unblock_by_func (G_OBJECT (bar->priv->adjustment),
on_adjustment_value_changed,
@@ -584,6 +609,7 @@ gvc_channel_bar_set_control (GvcChannelBar *bar, MateMixerStreamControl *control
update_mute_button (bar);
update_adjustment_limits (bar);
update_adjustment_value (bar);
+ update_scale_size (bar);
}
GtkOrientation
@@ -683,6 +709,28 @@ gvc_channel_bar_set_show_marks (GvcChannelBar *bar, gboolean show_marks)
}
gboolean
+gvc_channel_bar_get_show_mark_text (GvcChannelBar *bar)
+{
+ g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), FALSE);
+
+ return bar->priv->show_mark_text;
+}
+
+void
+gvc_channel_bar_set_show_mark_text (GvcChannelBar *bar, gboolean show_mark_text)
+{
+ g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+ if (show_mark_text == bar->priv->show_mark_text)
+ return;
+
+ bar->priv->show_mark_text = show_mark_text;
+ update_marks (bar);
+
+ g_object_notify_by_pspec (G_OBJECT (bar), properties[PROP_SHOW_MARK_TEXT]);
+}
+
+gboolean
gvc_channel_bar_get_extended (GvcChannelBar *bar)
{
g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), FALSE);
@@ -704,6 +752,7 @@ gvc_channel_bar_set_extended (GvcChannelBar *bar, gboolean extended)
* limit at the end of the scale */
update_marks (bar);
update_adjustment_limits (bar);
+ update_scale_size (bar);
g_object_notify_by_pspec (G_OBJECT (bar), properties[PROP_EXTENDED]);
}
@@ -940,6 +989,9 @@ gvc_channel_bar_set_property (GObject *object,
case PROP_SHOW_MARKS:
gvc_channel_bar_set_show_marks (self, g_value_get_boolean (value));
break;
+ case PROP_SHOW_MARK_TEXT:
+ gvc_channel_bar_set_show_mark_text (self, g_value_get_boolean (value));
+ break;
case PROP_EXTENDED:
gvc_channel_bar_set_extended (self, g_value_get_boolean (value));
break;
@@ -985,6 +1037,9 @@ gvc_channel_bar_get_property (GObject *object,
case PROP_SHOW_MARKS:
g_value_set_boolean (value, self->priv->show_marks);
break;
+ case PROP_SHOW_MARK_TEXT:
+ g_value_set_boolean (value, self->priv->show_mark_text);
+ break;
case PROP_EXTENDED:
g_value_set_boolean (value, self->priv->extended);
break;
@@ -1050,6 +1105,15 @@ gvc_channel_bar_class_init (GvcChannelBarClass *klass)
G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS);
+ properties[PROP_SHOW_MARK_TEXT] =
+ g_param_spec_boolean ("show-mark-text",
+ "Show mark-text",
+ "Whether to show a volume level label next to each scale mark",
+ TRUE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS);
+
properties[PROP_EXTENDED] =
g_param_spec_boolean ("extended",
"Extended",
diff --git a/mate-volume-control/gvc-channel-bar.h b/mate-volume-control/gvc-channel-bar.h
index d7a0cbc..7fc0ed2 100644
--- a/mate-volume-control/gvc-channel-bar.h
+++ b/mate-volume-control/gvc-channel-bar.h
@@ -95,6 +95,10 @@ gboolean gvc_channel_bar_get_show_marks (GvcChannelBar *bar
void gvc_channel_bar_set_show_marks (GvcChannelBar *bar,
gboolean show_marks);
+gboolean gvc_channel_bar_get_show_mark_text (GvcChannelBar *bar);
+void gvc_channel_bar_set_show_mark_text (GvcChannelBar *bar,
+ gboolean show_mark_text);
+
gboolean gvc_channel_bar_get_extended (GvcChannelBar *bar);
void gvc_channel_bar_set_extended (GvcChannelBar *bar,
gboolean extended);
diff --git a/mate-volume-control/gvc-level-bar.c b/mate-volume-control/gvc-level-bar.c
index ccf141b..13e7aeb 100644
--- a/mate-volume-control/gvc-level-bar.c
+++ b/mate-volume-control/gvc-level-bar.c
@@ -295,7 +295,7 @@ void
gvc_level_bar_set_peak_adjustment (GvcLevelBar *bar,
GtkAdjustment *adjustment)
{
- g_return_if_fail (GVC_LEVEL_BAR (bar));
+ g_return_if_fail (GVC_IS_LEVEL_BAR (bar));
g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
if (bar->priv->peak_adjustment != NULL) {
@@ -321,7 +321,7 @@ void
gvc_level_bar_set_rms_adjustment (GvcLevelBar *bar,
GtkAdjustment *adjustment)
{
- g_return_if_fail (GVC_LEVEL_BAR (bar));
+ g_return_if_fail (GVC_IS_LEVEL_BAR (bar));
g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
if (bar->priv->rms_adjustment != NULL) {
diff --git a/mate-volume-control/gvc-mixer-dialog.c b/mate-volume-control/gvc-mixer-dialog.c
index 759995b..a71a12f 100644
--- a/mate-volume-control/gvc-mixer-dialog.c
+++ b/mate-volume-control/gvc-mixer-dialog.c
@@ -41,9 +41,11 @@
struct _GvcMixerDialogPrivate
{
+ GSettings *sound_settings;
MateMixerContext *context;
MateMixerBackendFlags backend_flags;
GHashTable *bars;
+ GtkWidget *volume_overamplifiable_button;
GtkWidget *notebook;
GtkWidget *output_bar;
GtkWidget *input_bar;
@@ -369,6 +371,39 @@ update_output_settings (GvcMixerDialog *dialog)
gtk_widget_hide (dialog->priv->output_settings_frame);
}
+/*
+ * Enable or disable the checkbox allowing the user to set the volume above
+ * 100%, depending on whether the maximum volume is greater than the
+ * "normal" volume. If the maximum volume is greater than the normal
+ * volume, then enable the checkbox; otherwise, over-amplification is not
+ * possible with this control, so disable the checkbox.
+ */
+static void
+update_overamplify_sensitivity (GvcMixerDialog *dialog)
+{
+ MateMixerStreamControl *control;
+ guint normal_volume;
+ guint maximum_volume;
+
+ control = gvc_channel_bar_get_control (GVC_CHANNEL_BAR (dialog->priv->output_bar));
+ if (control == NULL)
+ {
+ gtk_widget_set_sensitive (dialog->priv->volume_overamplifiable_button,
+ FALSE);
+ return;
+ }
+
+ normal_volume = mate_mixer_stream_control_get_normal_volume (control);
+ maximum_volume = mate_mixer_stream_control_get_max_volume (control);
+
+ if (maximum_volume > normal_volume)
+ gtk_widget_set_sensitive (dialog->priv->volume_overamplifiable_button,
+ TRUE);
+ else
+ gtk_widget_set_sensitive (dialog->priv->volume_overamplifiable_button,
+ FALSE);
+}
+
static void
set_output_stream (GvcMixerDialog *dialog, MateMixerStream *stream)
{
@@ -420,6 +455,7 @@ set_output_stream (GvcMixerDialog *dialog, MateMixerStream *stream)
update_default_tree_item (dialog, model, stream);
update_output_settings (dialog);
+ update_overamplify_sensitivity (dialog);
}
static void
@@ -628,8 +664,7 @@ create_bar (GvcMixerDialog *dialog, gboolean use_size_group, gboolean symmetric)
"orientation", GTK_ORIENTATION_HORIZONTAL,
"show-mute", TRUE,
"show-icons", TRUE,
- "show-marks", TRUE,
- "extended", TRUE, NULL);
+ "show-marks", TRUE, NULL);
return bar;
}
@@ -861,6 +896,7 @@ add_stream (GvcMixerDialog *dialog, MateMixerStream *stream)
bar_set_stream (dialog, dialog->priv->output_bar, stream);
update_output_settings (dialog);
+ update_overamplify_sensitivity (dialog);
is_default = TRUE;
}
model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview));
@@ -1954,6 +1990,8 @@ gvc_mixer_dialog_constructor (GType type,
self = GVC_MIXER_DIALOG (object);
+ self->priv->sound_settings = g_settings_new ("org.mate.sound");
+
gtk_dialog_add_button (GTK_DIALOG (self), "gtk-close", GTK_RESPONSE_OK);
main_vbox = gtk_dialog_get_content_area (GTK_DIALOG (self));
@@ -1961,8 +1999,8 @@ gvc_mixer_dialog_constructor (GType type,
gtk_container_set_border_width (GTK_CONTAINER (self), 6);
- self->priv->output_stream_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- gtk_widget_set_margin_top (self->priv->output_stream_box, 12);
+ self->priv->output_stream_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+ gtk_container_set_border_width (GTK_CONTAINER (self->priv->output_stream_box), 12);
gtk_box_pack_start (GTK_BOX (main_vbox),
self->priv->output_stream_box,
@@ -1972,11 +2010,26 @@ gvc_mixer_dialog_constructor (GType type,
gvc_channel_bar_set_name (GVC_CHANNEL_BAR (self->priv->output_bar),
_("_Output volume: "));
+ g_settings_bind (self->priv->sound_settings, "volume-overamplifiable",
+ self->priv->output_bar, "extended",
+ G_SETTINGS_BIND_GET);
+
gtk_widget_show (self->priv->output_bar);
gtk_widget_set_sensitive (self->priv->output_bar, FALSE);
gtk_box_pack_start (GTK_BOX (self->priv->output_stream_box),
- self->priv->output_bar, TRUE, TRUE, 12);
+ self->priv->output_bar, TRUE, TRUE, 0);
+
+ self->priv->volume_overamplifiable_button =
+ gtk_check_button_new_with_mnemonic (_("Allow volume to e_xceed 100%"));
+
+ g_settings_bind (self->priv->sound_settings, "volume-overamplifiable",
+ self->priv->volume_overamplifiable_button, "active",
+ G_SETTINGS_BIND_GET|G_SETTINGS_BIND_SET);
+
+ gtk_box_pack_start (GTK_BOX (self->priv->output_stream_box),
+ self->priv->volume_overamplifiable_button,
+ FALSE, FALSE, 0);
self->priv->notebook = gtk_notebook_new ();
@@ -2346,6 +2399,8 @@ gvc_mixer_dialog_dispose (GObject *object)
g_clear_object (&dialog->priv->context);
}
+ g_clear_object (&dialog->priv->sound_settings);
+
G_OBJECT_CLASS (gvc_mixer_dialog_parent_class)->dispose (object);
}
diff --git a/mate-volume-control/gvc-sound-theme-chooser.c b/mate-volume-control/gvc-sound-theme-chooser.c
index a9aa825..b22153f 100644
--- a/mate-volume-control/gvc-sound-theme-chooser.c
+++ b/mate-volume-control/gvc-sound-theme-chooser.c
@@ -35,6 +35,7 @@
#include <gtk/gtk.h>
#include <canberra-gtk.h>
#include <libxml/tree.h>
+#include <libxml/parser.h>
#include "gvc-sound-theme-chooser.h"
#include "sound-theme-file-utils.h"
diff --git a/mate-volume-control/gvc-stream-applet-icon.c b/mate-volume-control/gvc-stream-applet-icon.c
index d2b7337..5d82c33 100644
--- a/mate-volume-control/gvc-stream-applet-icon.c
+++ b/mate-volume-control/gvc-stream-applet-icon.c
@@ -20,12 +20,18 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
+#include <config.h>
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
+#if defined(ENABLE_WAYLAND)
+#include <gdk/gdkwayland.h>
+#include <gtk-layer-shell/gtk-layer-shell.h>
+#endif
+
#include <libmatemixer/matemixer.h>
#include <mate-panel-applet.h>
@@ -37,6 +43,7 @@
struct _GvcStreamAppletIconPrivate
{
+ GSettings *sound_settings;
gchar **icon_names;
GtkImage *image;
GtkWidget *dock;
@@ -91,12 +98,83 @@ popup_dock (GvcStreamAppletIcon *icon, guint time)
gvc_channel_bar_set_orientation (GVC_CHANNEL_BAR (icon->priv->bar), GTK_ORIENTATION_VERTICAL);
}
- monitor_num = gdk_display_get_monitor_at_point (gdk_screen_get_display (screen), allocation.x, allocation.y);
+ display = gdk_screen_get_display (screen);
+ monitor_num = gdk_display_get_monitor_at_point (display, allocation.x, allocation.y);
gdk_monitor_get_geometry (monitor_num, &monitor);
gtk_container_foreach (GTK_CONTAINER (icon->priv->dock), (GtkCallback) gtk_widget_show_all, NULL);
gtk_widget_get_preferred_size (icon->priv->dock, &dock_req, NULL);
+#if defined(ENABLE_WAYLAND)
+ if (GDK_IS_WAYLAND_DISPLAY (display))
+ {
+ gboolean top, bottom, left, right;
+ GtkWidget *toplevel;
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (icon));
+
+ if (!gtk_layer_is_layer_window (GTK_WINDOW (icon->priv->dock)))
+ {
+ gtk_layer_init_for_window (GTK_WINDOW (icon->priv->dock));
+ gtk_layer_set_layer (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_LAYER_TOP);
+ gtk_layer_set_keyboard_mode (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_KEYBOARD_MODE_ON_DEMAND);
+ }
+
+ top = gtk_layer_get_anchor (GTK_WINDOW (toplevel), GTK_LAYER_SHELL_EDGE_TOP);
+ bottom = gtk_layer_get_anchor (GTK_WINDOW (toplevel), GTK_LAYER_SHELL_EDGE_BOTTOM);
+ left = gtk_layer_get_anchor (GTK_WINDOW (toplevel), GTK_LAYER_SHELL_EDGE_LEFT);
+ right = gtk_layer_get_anchor (GTK_WINDOW (toplevel), GTK_LAYER_SHELL_EDGE_RIGHT);
+
+ /*Set anchors to the edges (will hold to panel edge) and position along the panel
+ *Unset margins and anchors from any other position so as to avoid rendering issues
+ *when orientation changes as when the panel is moved
+ */
+
+ if (top && left && right)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_TOP, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_LEFT, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_BOTTOM, FALSE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_RIGHT, FALSE);
+ gtk_layer_set_margin (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_LEFT, allocation.x);
+ gtk_layer_set_margin (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_TOP, 0);
+ }
+ if (bottom && left && right)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_BOTTOM, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_LEFT, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_TOP, FALSE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_RIGHT, FALSE);
+ gtk_layer_set_margin (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_LEFT, allocation.x);
+ gtk_layer_set_margin (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_TOP, 0);
+ }
+ if (left && bottom && top && !right)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_LEFT, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_TOP, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_RIGHT, FALSE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_BOTTOM, FALSE);
+ gtk_layer_set_margin (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_TOP, allocation.y);
+ gtk_layer_set_margin (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_LEFT, 0);
+ }
+ if (right && bottom && top && !left)
+ {
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_RIGHT, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_TOP, TRUE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_LEFT, FALSE);
+ gtk_layer_set_anchor (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_BOTTOM, FALSE);
+ gtk_layer_set_margin (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_TOP, allocation.y);
+ gtk_layer_set_margin (GTK_WINDOW (icon->priv->dock), GTK_LAYER_SHELL_EDGE_LEFT, 0);
+ }
+ gtk_widget_show_all (icon->priv->dock);
+
+ /* Grab focus */
+ gtk_grab_add (icon->priv->dock);
+ gtk_widget_grab_focus (icon->priv->dock);
+
+ return TRUE;
+ }
+#endif /* wayland support */
+
if (icon->priv->orient == MATE_PANEL_APPLET_ORIENT_LEFT || icon->priv->orient == MATE_PANEL_APPLET_ORIENT_RIGHT) {
if (allocation.x + allocation.width + dock_req.width <= monitor.x + monitor.width)
x = allocation.x + allocation.width;
@@ -497,7 +575,7 @@ void
gvc_stream_applet_icon_set_display_name (GvcStreamAppletIcon *icon,
const gchar *name)
{
- g_return_if_fail (GVC_STREAM_APPLET_ICON (icon));
+ g_return_if_fail (GVC_IS_STREAM_APPLET_ICON (icon));
g_free (icon->priv->display_name);
@@ -511,7 +589,7 @@ void
gvc_stream_applet_icon_set_control (GvcStreamAppletIcon *icon,
MateMixerStreamControl *control)
{
- g_return_if_fail (GVC_STREAM_APPLET_ICON (icon));
+ g_return_if_fail (GVC_IS_STREAM_APPLET_ICON (icon));
if (icon->priv->control == control)
return;
@@ -680,6 +758,8 @@ gvc_stream_applet_icon_init (GvcStreamAppletIcon *icon)
icon->priv = gvc_stream_applet_icon_get_instance_private (icon);
+ icon->priv->sound_settings = g_settings_new ("org.mate.sound");
+
icon->priv->image = GTK_IMAGE (gtk_image_new ());
gtk_container_add (GTK_CONTAINER (icon), GTK_WIDGET (icon->priv->image));
@@ -731,6 +811,17 @@ gvc_stream_applet_icon_init (GvcStreamAppletIcon *icon)
gvc_channel_bar_set_orientation (GVC_CHANNEL_BAR (icon->priv->bar),
GTK_ORIENTATION_VERTICAL);
+ gvc_channel_bar_set_show_mark_text (GVC_CHANNEL_BAR (icon->priv->bar),
+ FALSE);
+
+ g_settings_bind (icon->priv->sound_settings, "volume-overamplifiable",
+ icon->priv->bar, "show-marks",
+ G_SETTINGS_BIND_GET);
+
+ g_settings_bind (icon->priv->sound_settings, "volume-overamplifiable",
+ icon->priv->bar, "extended",
+ G_SETTINGS_BIND_GET);
+
/* Set volume control frame, slider and toplevel window to follow panel theme */
GtkWidget *toplevel = gtk_widget_get_toplevel (icon->priv->dock);
GtkStyleContext *context;
@@ -769,6 +860,8 @@ gvc_stream_applet_icon_finalize (GObject *object)
on_icon_theme_change,
icon);
+ g_clear_object (&icon->priv->sound_settings);
+
G_OBJECT_CLASS (gvc_stream_applet_icon_parent_class)->finalize (object);
}
diff --git a/mate-volume-control/gvc-stream-status-icon.c b/mate-volume-control/gvc-stream-status-icon.c
index 8ca2849..dccd20d 100644
--- a/mate-volume-control/gvc-stream-status-icon.c
+++ b/mate-volume-control/gvc-stream-status-icon.c
@@ -29,12 +29,14 @@
#define MATE_DESKTOP_USE_UNSTABLE_API
#include <libmate-desktop/mate-desktop-utils.h>
+#include <libmate-desktop/mate-image-menu-item.h>
#include "gvc-channel-bar.h"
#include "gvc-stream-status-icon.h"
struct _GvcStreamStatusIconPrivate
{
+ GSettings *sound_settings;
gchar **icon_names;
GtkWidget *dock;
GtkWidget *bar;
@@ -243,8 +245,8 @@ on_status_icon_popup_menu (GtkStatusIcon *status_icon,
/* Set icon to muted*/
image = gtk_image_new_from_icon_name(icon->priv->icon_names[0], GTK_ICON_SIZE_MENU);
}
- item = gtk_image_menu_item_new_with_mnemonic(label);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ item = mate_image_menu_item_new_with_mnemonic(label);
+ mate_image_menu_item_set_image (MATE_IMAGE_MENU_ITEM (item), image);
g_signal_connect (G_OBJECT (item),
"activate",
G_CALLBACK (on_menu_mute_toggled),
@@ -252,10 +254,10 @@ on_status_icon_popup_menu (GtkStatusIcon *status_icon,
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- item = gtk_image_menu_item_new_with_mnemonic (_("_Sound Preferences"));
+ item = mate_image_menu_item_new_with_mnemonic (_("_Sound Preferences"));
image = gtk_image_new_from_icon_name ("multimedia-volume-control",
GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ mate_image_menu_item_set_image (MATE_IMAGE_MENU_ITEM (item), image);
g_signal_connect (G_OBJECT (item),
"activate",
@@ -380,6 +382,7 @@ static void
update_icon (GvcStreamStatusIcon *icon)
{
guint volume = 0;
+ guint volume_percent = 0;
gdouble decibel = 0;
guint normal = 0;
gboolean muted = FALSE;
@@ -407,7 +410,7 @@ update_icon (GvcStreamStatusIcon *icon)
/* Select an icon, they are expected to be sorted, the lowest index being
* the mute icon and the rest being volume increments */
- if (volume <= 0 || muted)
+ if (volume == 0 || muted)
n = 0;
else
n = CLAMP (3 * volume / normal + 1, 1, 3);
@@ -424,7 +427,9 @@ update_icon (GvcStreamStatusIcon *icon)
description = mate_mixer_stream_control_get_label (icon->priv->control);
- guint volume_percent = (guint) round (100.0 * volume / normal);
+ if (normal != 0)
+ volume_percent = (guint) (100.0 * ((double) volume) / ((double) normal));
+
if (muted) {
markup = g_strdup_printf ("<b>%s: %s %u%%</b>\n<small>%s</small>",
icon->priv->display_name,
@@ -508,7 +513,7 @@ void
gvc_stream_status_icon_set_display_name (GvcStreamStatusIcon *icon,
const gchar *name)
{
- g_return_if_fail (GVC_STREAM_STATUS_ICON (icon));
+ g_return_if_fail (GVC_IS_STREAM_STATUS_ICON (icon));
g_free (icon->priv->display_name);
@@ -522,7 +527,7 @@ void
gvc_stream_status_icon_set_control (GvcStreamStatusIcon *icon,
MateMixerStreamControl *control)
{
- g_return_if_fail (GVC_STREAM_STATUS_ICON (icon));
+ g_return_if_fail (GVC_IS_STREAM_STATUS_ICON (icon));
if (icon->priv->control == control)
return;
@@ -689,6 +694,8 @@ gvc_stream_status_icon_init (GvcStreamStatusIcon *icon)
icon->priv = gvc_stream_status_icon_get_instance_private (icon);
+ icon->priv->sound_settings = g_settings_new ("org.mate.sound");
+
g_signal_connect (G_OBJECT (icon),
"activate",
G_CALLBACK (on_status_icon_activate),
@@ -745,6 +752,17 @@ gvc_stream_status_icon_init (GvcStreamStatusIcon *icon)
gvc_channel_bar_set_orientation (GVC_CHANNEL_BAR (icon->priv->bar),
GTK_ORIENTATION_VERTICAL);
+ gvc_channel_bar_set_show_mark_text (GVC_CHANNEL_BAR (icon->priv->bar),
+ FALSE);
+
+ g_settings_bind (icon->priv->sound_settings, "volume-overamplifiable",
+ icon->priv->bar, "show-marks",
+ G_SETTINGS_BIND_GET);
+
+ g_settings_bind (icon->priv->sound_settings, "volume-overamplifiable",
+ icon->priv->bar, "extended",
+ G_SETTINGS_BIND_GET);
+
/* Set volume control frame, slider and toplevel window to follow panel theme */
GtkWidget *toplevel = gtk_widget_get_toplevel (icon->priv->dock);
GtkStyleContext *context;
@@ -781,6 +799,8 @@ gvc_stream_status_icon_finalize (GObject *object)
on_icon_theme_change,
icon);
+ g_clear_object (&icon->priv->sound_settings);
+
G_OBJECT_CLASS (gvc_stream_status_icon_parent_class)->finalize (object);
}
diff --git a/mate-volume-control/meson.build b/mate-volume-control/meson.build
new file mode 100644
index 0000000..132f0dd
--- /dev/null
+++ b/mate-volume-control/meson.build
@@ -0,0 +1,154 @@
+po_dir = join_paths(meson.source_root(), 'po')
+
+cflags = [
+ '-DMATELOCALEDIR="@0@"'.format(mm_localedir),
+ '-DLOCALE_DIR="@0@"'.format(mm_localedir),
+ '-DICON_DATA_DIR="@0@"'.format(mm_iconsdir),
+ '-DSOUND_SET_DIR="@0@"'.format(mm_soundsdir),
+ '-DI_KNOW_THE_DEVICEKIT_POWER_API_IS_SUBJECT_TO_CHANGE',
+]
+deps = [
+ glib,
+ gtk,
+ matemixer
+]
+if enable_wayland == 'yes'
+ deps += [gdkwayland, waylandclient, gls]
+endif
+
+libmvc_static = static_library(
+ 'libmatevolumecontrol',
+ sources: 'gvc-channel-bar.c',
+ include_directories: config_inc,
+ dependencies: deps,
+ c_args: cflags,
+ install: false,
+)
+
+if enable_applet
+ desktop_data = configuration_data()
+
+ if enable_process
+ desktop_data.set('APPLET_LOCATION', join_paths(mm_libdir, 'libmate-volume-control-applet.so'))
+ desktop_data.set('IN_PROCESS', 'true')
+
+ libmvca_shared = library(
+ 'libmate-volume-control-applet',
+ sources: [
+ 'gvc-stream-applet-icon.c',
+ 'gvc-applet.c',
+ 'applet-main.c'
+ ],
+ include_directories: config_inc,
+ dependencies: [
+ deps,
+ matepanel,
+ md,
+ canberra,
+ libm
+ ],
+ link_with :libmvc_static,
+ c_args: cflags,
+ install: true,
+ install_dir : mm_libdir,
+ )
+
+ else
+ desktop_data.set('APPLET_LOCATION', join_paths(mm_execdir, 'mate-volume-control-applet'))
+ desktop_data.set('IN_PROCESS', 'flase')
+
+ service_data = configuration_data()
+ service_data.set('LOCATION', join_paths(mm_execdir, 'mate-volume-control-applet'))
+ configure_file(
+ input : 'org.mate.panel.applet.GvcAppletFactory.service.in',
+ output : 'org.mate.panel.applet.GvcAppletFactory.service',
+ configuration : service_data,
+ install : true,
+ install_dir : join_paths(mm_datadir, 'dbus-1/services')
+ )
+ executable(
+ 'mate-volume-control-applet',
+ sources : [
+ 'gvc-stream-applet-icon.c',
+ 'gvc-applet.c',
+ 'applet-main.c'
+ ],
+ include_directories: config_inc,
+ dependencies : [
+ deps,
+ matepanel,
+ md,
+ canberra,
+ libm
+ ],
+ link_with :libmvc_static,
+ c_args : cflags,
+ install : true,
+ install_dir : mm_execdir
+ )
+ endif
+
+ desktop_in_file = configure_file(
+ input : 'org.mate.applets.GvcApplet.mate-panel-applet.desktop.in.in',
+ output : 'org.mate.applets.GvcApplet.mate-panel-applet.desktop.in',
+ configuration : desktop_data
+ )
+ i18n.merge_file(
+ input : desktop_in_file,
+ output : 'org.mate.applets.GvcApplet.mate-panel-applet.desktop',
+ type : 'desktop',
+ po_dir : po_dir,
+ install : true,
+ install_dir : join_paths(mm_datadir, 'mate-panel', 'applets')
+ )
+
+endif
+
+if enable_statusicon
+ executable(
+ 'mate-volume-control-status-icon',
+ sources : [
+ 'gvc-stream-status-icon.c',
+ 'gvc-status-icon.c',
+ 'status-icon-main.c'
+ ],
+ include_directories: config_inc,
+ dependencies : [
+ deps,
+ md,
+ canberra,
+ libm
+ ],
+ link_with :libmvc_static,
+ c_args : cflags,
+ install : true,
+ install_dir : get_option('bindir')
+)
+endif
+executable(
+ 'mate-volume-control',
+ sources : [
+ 'gvc-balance-bar.c',
+ 'gvc-level-bar.c',
+ 'gvc-combo-box.c',
+ 'gvc-sound-theme-chooser.c',
+ 'gvc-speaker-test.c',
+ 'gvc-utils.c',
+ 'sound-theme-file-utils.c',
+ 'gvc-mixer-dialog.c',
+ 'dialog-main.c'
+ ],
+ include_directories : config_inc,
+ dependencies : [
+ libm,
+ canberra,
+ md,
+ libxml,
+ deps
+ ],
+ link_with :libmvc_static,
+ c_args : cflags,
+ install : true,
+ install_dir : get_option('bindir')
+)
+
diff --git a/mate-volume-control/org.mate.applets.GvcApplet.mate-panel-applet.desktop.in.in b/mate-volume-control/org.mate.applets.GvcApplet.mate-panel-applet.desktop.in.in
index 46a8374..b222529 100644
--- a/mate-volume-control/org.mate.applets.GvcApplet.mate-panel-applet.desktop.in.in
+++ b/mate-volume-control/org.mate.applets.GvcApplet.mate-panel-applet.desktop.in.in
@@ -1,6 +1,7 @@
[Applet Factory]
Id=GvcAppletFactory
-Location=@LOCATION@
+InProcess=@IN_PROCESS@
+Location=@APPLET_LOCATION@
Name=Volume Control Factory
Description=Volume Control Factory
diff --git a/mate-volume-control/org.mate.panel.applet.GvcAppletFactory.service.in b/mate-volume-control/org.mate.panel.applet.GvcAppletFactory.service.in
index 0a01e2d..9e19920 100644
--- a/mate-volume-control/org.mate.panel.applet.GvcAppletFactory.service.in
+++ b/mate-volume-control/org.mate.panel.applet.GvcAppletFactory.service.in
@@ -1,4 +1,3 @@
[D-BUS Service]
Name=org.mate.panel.applet.GvcAppletFactory
Exec=@LOCATION@
-
diff --git a/mate-volume-control/status-icon-main.c b/mate-volume-control/status-icon-main.c
index e3dd684..6bf192a 100644
--- a/mate-volume-control/status-icon-main.c
+++ b/mate-volume-control/status-icon-main.c
@@ -45,7 +45,7 @@ main (int argc, char **argv)
GOptionEntry entries[] = {
{ "version", 'v', 0, G_OPTION_ARG_NONE, &show_version, N_("Version of this application"), NULL },
{ "debug", 'd', 0, G_OPTION_ARG_NONE, &debug, N_("Enable debug"), NULL },
- { NULL }
+ { NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL }
};
bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);