|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
UPDATE: x11/gnome-mplayerHi all, An update for gnome-mplayer. - several fixes for volume control. They solve the issue reported by edd@ sometimes ago: "On your setup is the volume control in the GUI kinda, unpredictable? It tends to jump about while it is being dragged / released." - bump PKGNAME Adapted from upstream svn. I've waited some time for this to go in. Now it's two weeks without further commits or new bug reports, so I'm considering this as a definitive solution... Ciao, David Index: Makefile =================================================================== RCS file: /cvs/ports/x11/gnome-mplayer/Makefile,v retrieving revision 1.12 diff -N -u -p Makefile --- Makefile 1 Nov 2009 08:54:42 -0000 1.12 +++ Makefile 6 Nov 2009 11:24:52 -0000 @@ -2,7 +2,7 @@ COMMENT = GTK+/GNOME frontend for MPlayer DISTNAME = gnome-mplayer-0.9.8 -PKGNAME = ${DISTNAME}p0 +PKGNAME = ${DISTNAME}p1 CATEGORIES = x11 multimedia MAINTAINER = David Coppa <dcoppa@...> Index: patches/patch-src_common_h =================================================================== RCS file: patches/patch-src_common_h diff -N -u -p patches/patch-src_common_h --- /dev/null 6 Nov 2009 11:24:53 -0000 +++ patches/patch-src_common_h 6 Nov 2009 11:24:53 -0000 @@ -0,0 +1,14 @@ +$OpenBSD$ + +fix from upstream svn (update volume control) + +--- src/common.h.orig Fri Nov 6 05:49:24 2009 ++++ src/common.h Fri Nov 6 05:50:06 2009 +@@ -486,6 +486,7 @@ void dbus_disable_screensaver(); + void menuitem_edit_random_callback(GtkMenuItem * menuitem, void *data); + + gboolean update_audio_meter(gpointer data); ++gboolean update_volume(gpointer data); + + void mplayer_shutdown(); + gpointer launch_player(gpointer data); Index: patches/patch-src_gui_c =================================================================== RCS file: /cvs/ports/x11/gnome-mplayer/patches/patch-src_gui_c,v retrieving revision 1.4 diff -N -u -p patches/patch-src_gui_c --- patches/patch-src_gui_c 31 Oct 2009 12:26:25 -0000 1.4 +++ patches/patch-src_gui_c 6 Nov 2009 11:24:53 -0000 @@ -3,11 +3,12 @@ $OpenBSD: patch-src_gui_c,v 1.4 2009/10/31 12:26:25 ed fixes from upstream svn: add disable_animation config option fix hidden cursor over menus +update volume control add sun, sndio and rtunes to available audio backends ---- src/gui.c.orig Thu Sep 17 18:05:35 2009 -+++ src/gui.c Sun Oct 18 17:51:31 2009 +--- src/gui.c.orig Thu Sep 17 10:05:35 2009 ++++ src/gui.c Fri Nov 6 05:04:23 2009 @@ -94,7 +94,9 @@ static void drawing_area_realized(GtkWidget * widget, * onwards, requesting the native window in a thread causes a BadWindowID, * so we need to request it now. We could call gdk_window_ensure_native(), @@ -18,7 +19,31 @@ add sun, sndio and rtunes to available audio backends } gint get_player_window() -@@ -435,7 +437,7 @@ gboolean set_progress_value(void *data) +@@ -108,6 +110,23 @@ gint get_player_window() + } + } + ++gboolean update_volume(gpointer data) ++{ ++ if (use_pulse_flat_volume && !softvol) { ++ if (state != QUIT) { ++ if (idledata->mplayer_volume + 1 != idledata->volume) { ++#ifdef GTK2_12_ENABLED ++ gtk_scale_button_set_value(GTK_SCALE_BUTTON(vol_slider), idledata->mplayer_volume); ++#else ++ gtk_range_set_value(GTK_RANGE(vol_slider), idledata->mplayer_volume); ++#endif ++ } ++ } ++ } ++ ++ return FALSE; ++} ++ + gboolean set_adjust_layout(gpointer data) + { + adjusting = FALSE; +@@ -435,7 +454,7 @@ gboolean set_progress_value(void *data) } if (idle->cachepercent < 1.0 && state == PAUSED) { text = @@ -27,7 +52,7 @@ add sun, sndio and rtunes to available audio backends (gint) (idle->cachepercent * 100)); gmtk_media_tracker_set_text(tracker, text); g_free(text); -@@ -561,7 +563,7 @@ gboolean set_progress_time(void *data) +@@ -561,7 +580,7 @@ gboolean set_progress_time(void *data) if (idle->cachepercent > 0 && idle->cachepercent < 1.0 && !(playlist) && !forcecache && !idle->streaming) { @@ -36,8 +61,103 @@ add sun, sndio and rtunes to available audio backends (int) (idle->cachepercent * 100)); } else { g_snprintf(idle->progress_text, 128, "%s", text); -@@ -2427,23 +2429,33 @@ gboolean make_panel_and_mouse_invisible(gpointer data) +@@ -595,17 +614,9 @@ gboolean set_volume_from_slider(gpointer data) + vol = (gint) gtk_range_get_value(GTK_RANGE(vol_slider)); + #endif + if (!idledata->mute) { +- if (use_pulse_flat_volume && !softvol) { +- set_alsa_volume(TRUE, vol); +- } else { +- cmd = g_strdup_printf("volume %i 1\n", vol); +- send_command(cmd, FALSE); +- g_free(cmd); +- } +- send_command("get_property volume\n", FALSE); +- if (state == PAUSED || state == STOPPED) { +- send_command("pause\n", FALSE); +- } ++ cmd = g_strdup_printf("volume %i 1\n", vol); ++ send_command(cmd, FALSE); ++ g_free(cmd); + } + return FALSE; +@@ -1416,6 +1427,8 @@ gboolean delete_callback(GtkWidget * widget, GdkEvent + ok_to_play = FALSE; + dontplaynext = TRUE; + ++ g_idle_remove_by_data(idledata); ++ + if (remember_loc && !fullscreen && embed_window == 0) { + gm_store = gm_pref_store_new("gnome-mplayer"); + gtk_window_get_position(GTK_WINDOW(window), &loc_window_x, &loc_window_y); +@@ -2308,13 +2321,9 @@ void vol_slider_callback(GtkRange * range, gpointer us + g_free(cmd); + idledata->mute = TRUE; + } else { +- if (use_pulse_flat_volume && !softvol) { +- set_alsa_volume(TRUE, vol); +- } else { +- cmd = g_strdup_printf("volume %i 1\n", vol); +- send_command(cmd, TRUE); +- g_free(cmd); +- } ++ cmd = g_strdup_printf("volume %i 1\n", vol); ++ send_command(cmd, TRUE); ++ g_free(cmd); + } + if (idledata->volume != vol) { + +@@ -2323,24 +2332,18 @@ void vol_slider_callback(GtkRange * range, gpointer us + g_idle_add(set_volume_tip, idledata); + g_free(buf); + } +- send_command("get_property volume\n", TRUE); + + dbus_send_rpsignal_with_double("RP_Volume", gtk_range_get_value(GTK_RANGE(vol_slider))); + + } + + #ifdef GTK2_12_ENABLED +-void vol_button_callback(GtkVolumeButton * volume, gpointer user_data) ++void vol_button_value_changed_callback(GtkScaleButton * volume, gdouble value, gpointer data) + { +- gint vol; ++ gint vol = value; + gchar *cmd; + gchar *buf; + +- if (rpcontrols != NULL && g_strcasecmp(rpcontrols, "volumeslider") == 0) { +- vol = (gint) gtk_range_get_value(GTK_RANGE(vol_slider)); +- } else { +- vol = (gint) gtk_scale_button_get_value(GTK_SCALE_BUTTON(volume)); +- } + if (idledata->mute && vol > 0) { + cmd = g_strdup_printf("mute 0\n"); + send_command(cmd, TRUE); +@@ -2356,6 +2359,7 @@ void vol_button_callback(GtkVolumeButton * volume, gpo + cmd = g_strdup_printf("volume %i 1\n", vol); + send_command(cmd, TRUE); + g_free(cmd); ++ idledata->volume = vol; + } + if (idledata->volume != vol) { + +@@ -2364,11 +2368,8 @@ void vol_button_callback(GtkVolumeButton * volume, gpo + g_idle_add(set_volume_tip, idledata); + g_free(buf); + } +- send_command("get_property volume\n", TRUE); + +- dbus_send_rpsignal_with_double("RP_Volume", +- gtk_scale_button_get_value(GTK_SCALE_BUTTON(vol_slider))); +- ++ dbus_send_rpsignal_with_double("RP_Volume", vol); + } + #endif + +@@ -2427,23 +2428,26 @@ gboolean make_panel_and_mouse_invisible(gpointer data) + g_get_current_time(¤ttime); g_time_val_add(¤ttime, -auto_hide_timeout * G_USEC_PER_SEC); - if (last_movement_time > 0 && currenttime.tv_sec > last_movement_time) { @@ -48,6 +168,15 @@ add sun, sndio and rtunes to available audio backends - gdk_pixmap_unref(cursor_source); - gdk_window_set_cursor(window->window, cursor); - gdk_cursor_unref(cursor); +- +- if (use_pulse_flat_volume && !softvol) { +- if (idledata->mplayer_volume != idledata->volume) { +- idledata->volume = idledata->mplayer_volume; +- set_volume(idledata); +- } +- } +- } +- + if (GTK_WIDGET_VISIBLE(menu_file) + || GTK_WIDGET_VISIBLE(menu_edit) + || GTK_WIDGET_VISIBLE(menu_view) @@ -65,28 +194,13 @@ add sun, sndio and rtunes to available audio backends + gdk_pixmap_unref(cursor_source); + gdk_window_set_cursor(window->window, cursor); + gdk_cursor_unref(cursor); - -- if (use_pulse_flat_volume && !softvol) { -- if (idledata->mplayer_volume != idledata->volume) { -- idledata->volume = idledata->mplayer_volume; -- set_volume(idledata); -- } -- } -- } -- -+ if (use_pulse_flat_volume && !softvol) { -+ if (idledata->mplayer_volume != idledata->volume) { -+ idledata->volume = idledata->mplayer_volume; -+ set_volume(idledata); -+ } -+ } + } + } + return FALSE; } -@@ -3671,6 +3683,8 @@ void config_apply(GtkWidget * widget, void *data) +@@ -3671,6 +3675,8 @@ void config_apply(GtkWidget * widget, void *data) !(gboolean) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(config_embeddedfonts)); disable_pause_on_click = !(gboolean) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(config_pause_on_click)); @@ -95,7 +209,7 @@ add sun, sndio and rtunes to available audio backends oldosd = osdlevel; osdlevel = (gint) gtk_range_get_value(GTK_RANGE(config_osdlevel)); pplevel = (gint) gtk_range_get_value(GTK_RANGE(config_pplevel)); -@@ -3774,6 +3788,7 @@ void config_apply(GtkWidget * widget, void *data) +@@ -3774,6 +3780,7 @@ void config_apply(GtkWidget * widget, void *data) gm_pref_store_set_boolean(gm_store, DISABLEDEINTERLACE, disable_deinterlace); gm_pref_store_set_boolean(gm_store, DISABLEFRAMEDROP, disable_framedrop); gm_pref_store_set_boolean(gm_store, DISABLEPAUSEONCLICK, disable_pause_on_click); @@ -103,7 +217,7 @@ add sun, sndio and rtunes to available audio backends gm_pref_store_set_boolean(gm_store, SHOWPLAYLIST, playlist_visible); gm_pref_store_set_boolean(gm_store, SHOWDETAILS, details_visible); gm_pref_store_set_boolean(gm_store, USE_MEDIAKEYS, use_mediakeys); -@@ -4697,32 +4712,41 @@ void menuitem_config_callback(GtkMenuItem * menuitem, +@@ -4697,32 +4704,41 @@ void menuitem_config_callback(GtkMenuItem * menuitem, tooltip = gtk_tooltips_new(); gtk_tooltips_set_tip(tooltip, config_ao, _ @@ -152,16 +266,52 @@ add sun, sndio and rtunes to available audio backends } } } -@@ -5308,6 +5332,12 @@ void menuitem_config_callback(GtkMenuItem * menuitem, - config_pause_on_click = gtk_check_button_new_with_label(_("Pause playback on mouse click")); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_pause_on_click), !disable_pause_on_click); - gtk_table_attach(GTK_TABLE(conf_table), config_pause_on_click, 0, 2, i, i + 1, GTK_FILL, -+ GTK_SHRINK, 0, 0); -+ i++; -+ +@@ -5311,6 +5327,12 @@ void menuitem_config_callback(GtkMenuItem * menuitem, + GTK_SHRINK, 0, 0); + i++; + + config_disable_animation = gtk_check_button_new_with_label(_("Disable Fullscreen Control Bar Animation")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_disable_animation), disable_animation); + gtk_table_attach(GTK_TABLE(conf_table), config_disable_animation, 0, 2, i, i + 1, GTK_FILL, - GTK_SHRINK, 0, 0); - i++; ++ GTK_SHRINK, 0, 0); ++ i++; ++ + config_verbose = gtk_check_button_new_with_label(_("Verbose Debug Enabled")); + tooltip = gtk_tooltips_new(); + gtk_tooltips_set_tip(tooltip, config_verbose, +@@ -6235,7 +6257,6 @@ GtkWidget *create_window(gint windowid) + drawing_area = gtk_socket_new(); + g_signal_connect(drawing_area, "realize", G_CALLBACK(drawing_area_realized), NULL); +- + cover_art = gtk_image_new(); + media_label = gtk_label_new(""); + gtk_widget_set_size_request(media_label, 300, -1); +@@ -6291,7 +6312,6 @@ GtkWidget *create_window(gint windowid) + + + // ok if the theme has all the icons we need, use them, otherwise use the default GNOME ones +- + if (gtk_icon_theme_has_icon(icon_theme, "media-playback-start") + && gtk_icon_theme_has_icon(icon_theme, "media-playback-pause") + && gtk_icon_theme_has_icon(icon_theme, "media-playback-stop") +@@ -6534,8 +6554,8 @@ GtkWidget *create_window(gint windowid) + else + gtk_object_set(GTK_OBJECT(vol_slider), "size", GTK_ICON_SIZE_MENU, NULL); + +- g_signal_connect(G_OBJECT(vol_slider), "value_changed", G_CALLBACK(vol_button_callback), +- NULL); ++ g_signal_connect(G_OBJECT(vol_slider), "value_changed", G_CALLBACK(vol_button_value_changed_callback), ++ idledata); + gtk_button_set_relief(GTK_BUTTON(vol_slider), GTK_RELIEF_NONE); + #else + vol_slider = gtk_hscale_new_with_range(0.0, 100.0, 1.0); +@@ -6543,7 +6563,7 @@ GtkWidget *create_window(gint windowid) + gtk_scale_set_draw_value(GTK_SCALE(vol_slider), FALSE); + gtk_range_set_value(GTK_RANGE(vol_slider), idledata->volume); + g_signal_connect(G_OBJECT(vol_slider), "value_changed", G_CALLBACK(vol_slider_callback), +- NULL); ++ idledata); + #endif + } + volume_tip = gtk_tooltips_new(); Index: patches/patch-src_main_c =================================================================== RCS file: /cvs/ports/x11/gnome-mplayer/patches/patch-src_main_c,v retrieving revision 1.2 diff -N -u -p patches/patch-src_main_c --- patches/patch-src_main_c 31 Oct 2009 12:26:25 -0000 1.2 +++ patches/patch-src_main_c 6 Nov 2009 11:24:53 -0000 @@ -5,9 +5,45 @@ set some sane defaults: use mplayer's software volume control (see pkg/MESSAGE) disable bar animation in full screen ---- src/main.c.orig Thu Sep 17 17:56:06 2009 -+++ src/main.c Sat Oct 17 17:53:22 2009 -@@ -699,7 +699,7 @@ int main(int argc, char *argv[]) +fix from upstream svn (update volume control) + +--- src/main.c.orig Thu Sep 17 09:56:06 2009 ++++ src/main.c Fri Nov 6 05:22:16 2009 +@@ -422,27 +422,13 @@ gint play_iter(GtkTreeIter * playiter, gint restart_se + g_strlcpy(thread_data->subtitle, subtitle, 1024); + g_free(subtitle); + } +- /* +- #ifdef HAVE_ASOUNDLIB +- if (!softvol && ao != NULL +- && (g_ascii_strcasecmp(ao, "alsa") == 0 +- || (use_pulse_flat_volume && g_ascii_strcasecmp(ao, "pulse") == 0))) { +- volume = (gint) get_alsa_volume(TRUE); +- idledata->volume = volume; +- #if GTK2_12_ENABLED +- gtk_scale_button_set_value(GTK_SCALE_BUTTON(vol_slider), volume); +- #else +- gtk_range_set_value(GTK_RANGE(vol_slider), volume); +- #endif +- } +- #endif + +- #if GTK2_12_ENABLED +- volume = gtk_scale_button_get_value(GTK_SCALE_BUTTON(vol_slider)); +- #else +- volume = gtk_range_get_value(GTK_RANGE(vol_slider)); +- #endif +- */ ++#if GTK2_12_ENABLED ++ volume = gtk_scale_button_get_value(GTK_SCALE_BUTTON(vol_slider)); ++#else ++ volume = gtk_range_get_value(GTK_RANGE(vol_slider)); ++#endif ++ + if (g_ascii_strcasecmp(thread_data->filename, "") != 0) { + if (!device_name(thread_data->filename) && !streaming_media(thread_data->filename)) { + if (!g_file_test(thread_data->filename, G_FILE_TEST_EXISTS)) { +@@ -699,7 +685,7 @@ int main(int argc, char *argv[]) playlist_visible = FALSE; disable_fullscreen = FALSE; disable_framedrop = FALSE; @@ -16,7 +52,7 @@ disable bar animation in full screen subtitlefont = NULL; subtitle_codepage = NULL; subtitle_color = NULL; -@@ -711,7 +711,7 @@ int main(int argc, char *argv[]) +@@ -711,7 +697,7 @@ int main(int argc, char *argv[]) reallyverbose = 0; embedding_disabled = FALSE; disable_pause_on_click = FALSE; Index: patches/patch-src_thread_c =================================================================== RCS file: /cvs/ports/x11/gnome-mplayer/patches/patch-src_thread_c,v retrieving revision 1.1 diff -N -u -p patches/patch-src_thread_c --- patches/patch-src_thread_c 31 Oct 2009 12:26:25 -0000 1.1 +++ patches/patch-src_thread_c 6 Nov 2009 11:24:53 -0000 @@ -2,27 +2,77 @@ $OpenBSD: patch-src_thread_c,v 1.1 2009/10/31 12:26:25 volume and mute fixes from upstream svn ---- src/thread.c.orig Wed Oct 14 03:38:40 2009 -+++ src/thread.c Wed Oct 14 03:45:28 2009 -@@ -513,7 +513,12 @@ gboolean thread_reader(GIOChannel * source, GIOConditi - idledata->mplayer_volume = volume; - idledata->mute = (volume > 0); - } +--- src/thread.c.orig Thu Sep 17 10:01:44 2009 ++++ src/thread.c Fri Nov 6 05:43:59 2009 +@@ -269,7 +269,8 @@ gboolean thread_reader(GIOChannel * source, GIOConditi + GIOStatus status; + gchar *buf, *message = NULL; + gchar *cmd; +- gint pos, volume, i; ++ gint pos, i; ++ gfloat vol; + gfloat percent; + GError *error = NULL; + gchar *error_msg = NULL; +@@ -506,14 +507,11 @@ gboolean thread_reader(GIOChannel * source, GIOConditi + + if (strstr(mplayer_output->str, "ANS_volume") != 0) { + buf = strstr(mplayer_output->str, "ANS_volume"); +- sscanf(buf, "ANS_volume=%i", &volume); +- if (!idledata->mute) { +- if (use_pulse_flat_volume && !softvol) { +- // Need to track what the master volume is, gui is updated in make mouse invisible +- idledata->mplayer_volume = volume; +- idledata->mute = (volume > 0); +- } - } -+ } else { -+ if (softvol) { -+ idledata->mplayer_volume = volume; -+ idledata->mute = (volume > 0); -+ } -+ } ++ sscanf(buf, "ANS_volume=%f", &vol); ++ // Need to track what the master volume is, gui is updated in make mouse invisible ++ idledata->mplayer_volume = vol; ++ idledata->mute = !((gint)vol > 0); ++ g_idle_add(update_volume, idledata); } if (strstr(mplayer_output->str, "ANS_chapters") != 0) { -@@ -844,6 +849,7 @@ gboolean thread_query(gpointer data) - } else { +@@ -827,13 +825,6 @@ gboolean thread_query(gpointer data) + // but don't start polling until meter is visible + g_idle_add(map_af_export_file, idledata); + } +- // track volume control +- if (use_pulse_flat_volume && !softvol) { +- volume = (gint) get_alsa_volume(FALSE); +- idledata->volume = volume; +- if (!idledata->mute) +- g_idle_add(set_volume, idledata); +- } - //send_command("get_time_pos\n"); -+ send_command("get_time_length\n", TRUE); - send_command("get_property stream_pos\n", TRUE); + if (state == PLAYING) { + // size = write(std_in, "get_percent_pos\n", strlen("get_percent_pos\n")); +@@ -842,9 +833,9 @@ gboolean thread_query(gpointer data) + g_idle_add(set_kill_mplayer,NULL); + return FALSE; + } else { +- +- //send_command("get_time_pos\n"); +- send_command("get_property stream_pos\n", TRUE); ++ send_command("get_time_length\n", TRUE); ++ send_command("get_property stream_pos\n", TRUE); ++ send_command("get_property volume\n", TRUE); if (threaddata->streaming) send_command("get_property metadata\n", TRUE); + g_idle_add(make_panel_and_mouse_invisible, NULL); +@@ -979,11 +970,9 @@ gpointer launch_player(gpointer data) + argv[arg++] = g_strdup_printf("-softvol"); + + if (use_volume_option) { +- argv[arg++] = g_strdup_printf("-volume"); +- if (idledata->mute) +- argv[arg++] = g_strdup_printf("0"); +- else +- argv[arg++] = g_strdup_printf("%i", (gint) idledata->volume); ++ argv[arg++] = g_strdup_printf("-volume"); ++ argv[arg++] = g_strdup_printf("%i", (gint) idledata->volume); ++ idledata->mplayer_volume = idledata->volume; + } + + if (mixer != NULL && strlen(mixer) > 0) { Index: Makefile =================================================================== RCS file: /cvs/ports/x11/gnome-mplayer/Makefile,v retrieving revision 1.12 diff -N -u -p Makefile --- Makefile 1 Nov 2009 08:54:42 -0000 1.12 +++ Makefile 6 Nov 2009 11:24:52 -0000 @@ -2,7 +2,7 @@ COMMENT = GTK+/GNOME frontend for MPlayer DISTNAME = gnome-mplayer-0.9.8 -PKGNAME = ${DISTNAME}p0 +PKGNAME = ${DISTNAME}p1 CATEGORIES = x11 multimedia MAINTAINER = David Coppa <dcoppa@...> Index: patches/patch-src_common_h =================================================================== RCS file: patches/patch-src_common_h diff -N -u -p patches/patch-src_common_h --- /dev/null 6 Nov 2009 11:24:53 -0000 +++ patches/patch-src_common_h 6 Nov 2009 11:24:53 -0000 @@ -0,0 +1,14 @@ +$OpenBSD$ + +fix from upstream svn (update volume control) + +--- src/common.h.orig Fri Nov 6 05:49:24 2009 ++++ src/common.h Fri Nov 6 05:50:06 2009 +@@ -486,6 +486,7 @@ void dbus_disable_screensaver(); + void menuitem_edit_random_callback(GtkMenuItem * menuitem, void *data); + + gboolean update_audio_meter(gpointer data); ++gboolean update_volume(gpointer data); + + void mplayer_shutdown(); + gpointer launch_player(gpointer data); Index: patches/patch-src_gui_c =================================================================== RCS file: /cvs/ports/x11/gnome-mplayer/patches/patch-src_gui_c,v retrieving revision 1.4 diff -N -u -p patches/patch-src_gui_c --- patches/patch-src_gui_c 31 Oct 2009 12:26:25 -0000 1.4 +++ patches/patch-src_gui_c 6 Nov 2009 11:24:53 -0000 @@ -3,11 +3,12 @@ $OpenBSD: patch-src_gui_c,v 1.4 2009/10/31 12:26:25 ed fixes from upstream svn: add disable_animation config option fix hidden cursor over menus +update volume control add sun, sndio and rtunes to available audio backends ---- src/gui.c.orig Thu Sep 17 18:05:35 2009 -+++ src/gui.c Sun Oct 18 17:51:31 2009 +--- src/gui.c.orig Thu Sep 17 10:05:35 2009 ++++ src/gui.c Fri Nov 6 05:04:23 2009 @@ -94,7 +94,9 @@ static void drawing_area_realized(GtkWidget * widget, * onwards, requesting the native window in a thread causes a BadWindowID, * so we need to request it now. We could call gdk_window_ensure_native(), @@ -18,7 +19,31 @@ add sun, sndio and rtunes to available audio backends } gint get_player_window() -@@ -435,7 +437,7 @@ gboolean set_progress_value(void *data) +@@ -108,6 +110,23 @@ gint get_player_window() + } + } + ++gboolean update_volume(gpointer data) ++{ ++ if (use_pulse_flat_volume && !softvol) { ++ if (state != QUIT) { ++ if (idledata->mplayer_volume + 1 != idledata->volume) { ++#ifdef GTK2_12_ENABLED ++ gtk_scale_button_set_value(GTK_SCALE_BUTTON(vol_slider), idledata->mplayer_volume); ++#else ++ gtk_range_set_value(GTK_RANGE(vol_slider), idledata->mplayer_volume); ++#endif ++ } ++ } ++ } ++ ++ return FALSE; ++} ++ + gboolean set_adjust_layout(gpointer data) + { + adjusting = FALSE; +@@ -435,7 +454,7 @@ gboolean set_progress_value(void *data) } if (idle->cachepercent < 1.0 && state == PAUSED) { text = @@ -27,7 +52,7 @@ add sun, sndio and rtunes to available audio backends (gint) (idle->cachepercent * 100)); gmtk_media_tracker_set_text(tracker, text); g_free(text); -@@ -561,7 +563,7 @@ gboolean set_progress_time(void *data) +@@ -561,7 +580,7 @@ gboolean set_progress_time(void *data) if (idle->cachepercent > 0 && idle->cachepercent < 1.0 && !(playlist) && !forcecache && !idle->streaming) { @@ -36,8 +61,103 @@ add sun, sndio and rtunes to available audio backends (int) (idle->cachepercent * 100)); } else { g_snprintf(idle->progress_text, 128, "%s", text); -@@ -2427,23 +2429,33 @@ gboolean make_panel_and_mouse_invisible(gpointer data) +@@ -595,17 +614,9 @@ gboolean set_volume_from_slider(gpointer data) + vol = (gint) gtk_range_get_value(GTK_RANGE(vol_slider)); + #endif + if (!idledata->mute) { +- if (use_pulse_flat_volume && !softvol) { +- set_alsa_volume(TRUE, vol); +- } else { +- cmd = g_strdup_printf("volume %i 1\n", vol); +- send_command(cmd, FALSE); +- g_free(cmd); +- } +- send_command("get_property volume\n", FALSE); +- if (state == PAUSED || state == STOPPED) { +- send_command("pause\n", FALSE); +- } ++ cmd = g_strdup_printf("volume %i 1\n", vol); ++ send_command(cmd, FALSE); ++ g_free(cmd); + } + return FALSE; +@@ -1416,6 +1427,8 @@ gboolean delete_callback(GtkWidget * widget, GdkEvent + ok_to_play = FALSE; + dontplaynext = TRUE; + ++ g_idle_remove_by_data(idledata); ++ + if (remember_loc && !fullscreen && embed_window == 0) { + gm_store = gm_pref_store_new("gnome-mplayer"); + gtk_window_get_position(GTK_WINDOW(window), &loc_window_x, &loc_window_y); +@@ -2308,13 +2321,9 @@ void vol_slider_callback(GtkRange * range, gpointer us + g_free(cmd); + idledata->mute = TRUE; + } else { +- if (use_pulse_flat_volume && !softvol) { +- set_alsa_volume(TRUE, vol); +- } else { +- cmd = g_strdup_printf("volume %i 1\n", vol); +- send_command(cmd, TRUE); +- g_free(cmd); +- } ++ cmd = g_strdup_printf("volume %i 1\n", vol); ++ send_command(cmd, TRUE); ++ g_free(cmd); + } + if (idledata->volume != vol) { + +@@ -2323,24 +2332,18 @@ void vol_slider_callback(GtkRange * range, gpointer us + g_idle_add(set_volume_tip, idledata); + g_free(buf); + } +- send_command("get_property volume\n", TRUE); + + dbus_send_rpsignal_with_double("RP_Volume", gtk_range_get_value(GTK_RANGE(vol_slider))); + + } + + #ifdef GTK2_12_ENABLED +-void vol_button_callback(GtkVolumeButton * volume, gpointer user_data) ++void vol_button_value_changed_callback(GtkScaleButton * volume, gdouble value, gpointer data) + { +- gint vol; ++ gint vol = value; + gchar *cmd; + gchar *buf; + +- if (rpcontrols != NULL && g_strcasecmp(rpcontrols, "volumeslider") == 0) { +- vol = (gint) gtk_range_get_value(GTK_RANGE(vol_slider)); +- } else { +- vol = (gint) gtk_scale_button_get_value(GTK_SCALE_BUTTON(volume)); +- } + if (idledata->mute && vol > 0) { + cmd = g_strdup_printf("mute 0\n"); + send_command(cmd, TRUE); +@@ -2356,6 +2359,7 @@ void vol_button_callback(GtkVolumeButton * volume, gpo + cmd = g_strdup_printf("volume %i 1\n", vol); + send_command(cmd, TRUE); + g_free(cmd); ++ idledata->volume = vol; + } + if (idledata->volume != vol) { + +@@ -2364,11 +2368,8 @@ void vol_button_callback(GtkVolumeButton * volume, gpo + g_idle_add(set_volume_tip, idledata); + g_free(buf); + } +- send_command("get_property volume\n", TRUE); + +- dbus_send_rpsignal_with_double("RP_Volume", +- gtk_scale_button_get_value(GTK_SCALE_BUTTON(vol_slider))); +- ++ dbus_send_rpsignal_with_double("RP_Volume", vol); + } + #endif + +@@ -2427,23 +2428,26 @@ gboolean make_panel_and_mouse_invisible(gpointer data) + g_get_current_time(¤ttime); g_time_val_add(¤ttime, -auto_hide_timeout * G_USEC_PER_SEC); - if (last_movement_time > 0 && currenttime.tv_sec > last_movement_time) { @@ -48,6 +168,15 @@ add sun, sndio and rtunes to available audio backends - gdk_pixmap_unref(cursor_source); - gdk_window_set_cursor(window->window, cursor); - gdk_cursor_unref(cursor); +- +- if (use_pulse_flat_volume && !softvol) { +- if (idledata->mplayer_volume != idledata->volume) { +- idledata->volume = idledata->mplayer_volume; +- set_volume(idledata); +- } +- } +- } +- + if (GTK_WIDGET_VISIBLE(menu_file) + || GTK_WIDGET_VISIBLE(menu_edit) + || GTK_WIDGET_VISIBLE(menu_view) @@ -65,28 +194,13 @@ add sun, sndio and rtunes to available audio backends + gdk_pixmap_unref(cursor_source); + gdk_window_set_cursor(window->window, cursor); + gdk_cursor_unref(cursor); - -- if (use_pulse_flat_volume && !softvol) { -- if (idledata->mplayer_volume != idledata->volume) { -- idledata->volume = idledata->mplayer_volume; -- set_volume(idledata); -- } -- } -- } -- -+ if (use_pulse_flat_volume && !softvol) { -+ if (idledata->mplayer_volume != idledata->volume) { -+ idledata->volume = idledata->mplayer_volume; -+ set_volume(idledata); -+ } -+ } + } + } + return FALSE; } -@@ -3671,6 +3683,8 @@ void config_apply(GtkWidget * widget, void *data) +@@ -3671,6 +3675,8 @@ void config_apply(GtkWidget * widget, void *data) !(gboolean) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(config_embeddedfonts)); disable_pause_on_click = !(gboolean) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(config_pause_on_click)); @@ -95,7 +209,7 @@ add sun, sndio and rtunes to available audio backends oldosd = osdlevel; osdlevel = (gint) gtk_range_get_value(GTK_RANGE(config_osdlevel)); pplevel = (gint) gtk_range_get_value(GTK_RANGE(config_pplevel)); -@@ -3774,6 +3788,7 @@ void config_apply(GtkWidget * widget, void *data) +@@ -3774,6 +3780,7 @@ void config_apply(GtkWidget * widget, void *data) gm_pref_store_set_boolean(gm_store, DISABLEDEINTERLACE, disable_deinterlace); gm_pref_store_set_boolean(gm_store, DISABLEFRAMEDROP, disable_framedrop); gm_pref_store_set_boolean(gm_store, DISABLEPAUSEONCLICK, disable_pause_on_click); @@ -103,7 +217,7 @@ add sun, sndio and rtunes to available audio backends gm_pref_store_set_boolean(gm_store, SHOWPLAYLIST, playlist_visible); gm_pref_store_set_boolean(gm_store, SHOWDETAILS, details_visible); gm_pref_store_set_boolean(gm_store, USE_MEDIAKEYS, use_mediakeys); -@@ -4697,32 +4712,41 @@ void menuitem_config_callback(GtkMenuItem * menuitem, +@@ -4697,32 +4704,41 @@ void menuitem_config_callback(GtkMenuItem * menuitem, tooltip = gtk_tooltips_new(); gtk_tooltips_set_tip(tooltip, config_ao, _ @@ -152,16 +266,52 @@ add sun, sndio and rtunes to available audio backends } } } -@@ -5308,6 +5332,12 @@ void menuitem_config_callback(GtkMenuItem * menuitem, - config_pause_on_click = gtk_check_button_new_with_label(_("Pause playback on mouse click")); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_pause_on_click), !disable_pause_on_click); - gtk_table_attach(GTK_TABLE(conf_table), config_pause_on_click, 0, 2, i, i + 1, GTK_FILL, -+ GTK_SHRINK, 0, 0); -+ i++; -+ +@@ -5311,6 +5327,12 @@ void menuitem_config_callback(GtkMenuItem * menuitem, + GTK_SHRINK, 0, 0); + i++; + + config_disable_animation = gtk_check_button_new_with_label(_("Disable Fullscreen Control Bar Animation")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_disable_animation), disable_animation); + gtk_table_attach(GTK_TABLE(conf_table), config_disable_animation, 0, 2, i, i + 1, GTK_FILL, - GTK_SHRINK, 0, 0); - i++; ++ GTK_SHRINK, 0, 0); ++ i++; ++ + config_verbose = gtk_check_button_new_with_label(_("Verbose Debug Enabled")); + tooltip = gtk_tooltips_new(); + gtk_tooltips_set_tip(tooltip, config_verbose, +@@ -6235,7 +6257,6 @@ GtkWidget *create_window(gint windowid) + drawing_area = gtk_socket_new(); + g_signal_connect(drawing_area, "realize", G_CALLBACK(drawing_area_realized), NULL); +- + cover_art = gtk_image_new(); + media_label = gtk_label_new(""); + gtk_widget_set_size_request(media_label, 300, -1); +@@ -6291,7 +6312,6 @@ GtkWidget *create_window(gint windowid) + + + // ok if the theme has all the icons we need, use them, otherwise use the default GNOME ones +- + if (gtk_icon_theme_has_icon(icon_theme, "media-playback-start") + && gtk_icon_theme_has_icon(icon_theme, "media-playback-pause") + && gtk_icon_theme_has_icon(icon_theme, "media-playback-stop") +@@ -6534,8 +6554,8 @@ GtkWidget *create_window(gint windowid) + else + gtk_object_set(GTK_OBJECT(vol_slider), "size", GTK_ICON_SIZE_MENU, NULL); + +- g_signal_connect(G_OBJECT(vol_slider), "value_changed", G_CALLBACK(vol_button_callback), +- NULL); ++ g_signal_connect(G_OBJECT(vol_slider), "value_changed", G_CALLBACK(vol_button_value_changed_callback), ++ idledata); + gtk_button_set_relief(GTK_BUTTON(vol_slider), GTK_RELIEF_NONE); + #else + vol_slider = gtk_hscale_new_with_range(0.0, 100.0, 1.0); +@@ -6543,7 +6563,7 @@ GtkWidget *create_window(gint windowid) + gtk_scale_set_draw_value(GTK_SCALE(vol_slider), FALSE); + gtk_range_set_value(GTK_RANGE(vol_slider), idledata->volume); + g_signal_connect(G_OBJECT(vol_slider), "value_changed", G_CALLBACK(vol_slider_callback), +- NULL); ++ idledata); + #endif + } + volume_tip = gtk_tooltips_new(); Index: patches/patch-src_main_c =================================================================== RCS file: /cvs/ports/x11/gnome-mplayer/patches/patch-src_main_c,v retrieving revision 1.2 diff -N -u -p patches/patch-src_main_c --- patches/patch-src_main_c 31 Oct 2009 12:26:25 -0000 1.2 +++ patches/patch-src_main_c 6 Nov 2009 11:24:53 -0000 @@ -5,9 +5,45 @@ set some sane defaults: use mplayer's software volume control (see pkg/MESSAGE) disable bar animation in full screen ---- src/main.c.orig Thu Sep 17 17:56:06 2009 -+++ src/main.c Sat Oct 17 17:53:22 2009 -@@ -699,7 +699,7 @@ int main(int argc, char *argv[]) +fix from upstream svn (update volume control) + +--- src/main.c.orig Thu Sep 17 09:56:06 2009 ++++ src/main.c Fri Nov 6 05:22:16 2009 +@@ -422,27 +422,13 @@ gint play_iter(GtkTreeIter * playiter, gint restart_se + g_strlcpy(thread_data->subtitle, subtitle, 1024); + g_free(subtitle); + } +- /* +- #ifdef HAVE_ASOUNDLIB +- if (!softvol && ao != NULL +- && (g_ascii_strcasecmp(ao, "alsa") == 0 +- || (use_pulse_flat_volume && g_ascii_strcasecmp(ao, "pulse") == 0))) { +- volume = (gint) get_alsa_volume(TRUE); +- idledata->volume = volume; +- #if GTK2_12_ENABLED +- gtk_scale_button_set_value(GTK_SCALE_BUTTON(vol_slider), volume); +- #else +- gtk_range_set_value(GTK_RANGE(vol_slider), volume); +- #endif +- } +- #endif + +- #if GTK2_12_ENABLED +- volume = gtk_scale_button_get_value(GTK_SCALE_BUTTON(vol_slider)); +- #else +- volume = gtk_range_get_value(GTK_RANGE(vol_slider)); +- #endif +- */ ++#if GTK2_12_ENABLED ++ volume = gtk_scale_button_get_value(GTK_SCALE_BUTTON(vol_slider)); ++#else ++ volume = gtk_range_get_value(GTK_RANGE(vol_slider)); ++#endif ++ + if (g_ascii_strcasecmp(thread_data->filename, "") != 0) { + if (!device_name(thread_data->filename) && !streaming_media(thread_data->filename)) { + if (!g_file_test(thread_data->filename, G_FILE_TEST_EXISTS)) { +@@ -699,7 +685,7 @@ int main(int argc, char *argv[]) playlist_visible = FALSE; disable_fullscreen = FALSE; disable_framedrop = FALSE; @@ -16,7 +52,7 @@ disable bar animation in full screen subtitlefont = NULL; subtitle_codepage = NULL; subtitle_color = NULL; -@@ -711,7 +711,7 @@ int main(int argc, char *argv[]) +@@ -711,7 +697,7 @@ int main(int argc, char *argv[]) reallyverbose = 0; embedding_disabled = FALSE; disable_pause_on_click = FALSE; Index: patches/patch-src_thread_c =================================================================== RCS file: /cvs/ports/x11/gnome-mplayer/patches/patch-src_thread_c,v retrieving revision 1.1 diff -N -u -p patches/patch-src_thread_c --- patches/patch-src_thread_c 31 Oct 2009 12:26:25 -0000 1.1 +++ patches/patch-src_thread_c 6 Nov 2009 11:24:53 -0000 @@ -2,27 +2,77 @@ $OpenBSD: patch-src_thread_c,v 1.1 2009/10/31 12:26:25 volume and mute fixes from upstream svn ---- src/thread.c.orig Wed Oct 14 03:38:40 2009 -+++ src/thread.c Wed Oct 14 03:45:28 2009 -@@ -513,7 +513,12 @@ gboolean thread_reader(GIOChannel * source, GIOConditi - idledata->mplayer_volume = volume; - idledata->mute = (volume > 0); - } +--- src/thread.c.orig Thu Sep 17 10:01:44 2009 ++++ src/thread.c Fri Nov 6 05:43:59 2009 +@@ -269,7 +269,8 @@ gboolean thread_reader(GIOChannel * source, GIOConditi + GIOStatus status; + gchar *buf, *message = NULL; + gchar *cmd; +- gint pos, volume, i; ++ gint pos, i; ++ gfloat vol; + gfloat percent; + GError *error = NULL; + gchar *error_msg = NULL; +@@ -506,14 +507,11 @@ gboolean thread_reader(GIOChannel * source, GIOConditi + + if (strstr(mplayer_output->str, "ANS_volume") != 0) { + buf = strstr(mplayer_output->str, "ANS_volume"); +- sscanf(buf, "ANS_volume=%i", &volume); +- if (!idledata->mute) { +- if (use_pulse_flat_volume && !softvol) { +- // Need to track what the master volume is, gui is updated in make mouse invisible +- idledata->mplayer_volume = volume; +- idledata->mute = (volume > 0); +- } - } -+ } else { -+ if (softvol) { -+ idledata->mplayer_volume = volume; -+ idledata->mute = (volume > 0); -+ } -+ } ++ sscanf(buf, "ANS_volume=%f", &vol); ++ // Need to track what the master volume is, gui is updated in make mouse invisible ++ idledata->mplayer_volume = vol; ++ idledata->mute = !((gint)vol > 0); ++ g_idle_add(update_volume, idledata); } if (strstr(mplayer_output->str, "ANS_chapters") != 0) { -@@ -844,6 +849,7 @@ gboolean thread_query(gpointer data) - } else { +@@ -827,13 +825,6 @@ gboolean thread_query(gpointer data) + // but don't start polling until meter is visible + g_idle_add(map_af_export_file, idledata); + } +- // track volume control +- if (use_pulse_flat_volume && !softvol) { +- volume = (gint) get_alsa_volume(FALSE); +- idledata->volume = volume; +- if (!idledata->mute) +- g_idle_add(set_volume, idledata); +- } - //send_command("get_time_pos\n"); -+ send_command("get_time_length\n", TRUE); - send_command("get_property stream_pos\n", TRUE); + if (state == PLAYING) { + // size = write(std_in, "get_percent_pos\n", strlen("get_percent_pos\n")); +@@ -842,9 +833,9 @@ gboolean thread_query(gpointer data) + g_idle_add(set_kill_mplayer,NULL); + return FALSE; + } else { +- +- //send_command("get_time_pos\n"); +- send_command("get_property stream_pos\n", TRUE); ++ send_command("get_time_length\n", TRUE); ++ send_command("get_property stream_pos\n", TRUE); ++ send_command("get_property volume\n", TRUE); if (threaddata->streaming) send_command("get_property metadata\n", TRUE); + g_idle_add(make_panel_and_mouse_invisible, NULL); +@@ -979,11 +970,9 @@ gpointer launch_player(gpointer data) + argv[arg++] = g_strdup_printf("-softvol"); + + if (use_volume_option) { +- argv[arg++] = g_strdup_printf("-volume"); +- if (idledata->mute) +- argv[arg++] = g_strdup_printf("0"); +- else +- argv[arg++] = g_strdup_printf("%i", (gint) idledata->volume); ++ argv[arg++] = g_strdup_printf("-volume"); ++ argv[arg++] = g_strdup_printf("%i", (gint) idledata->volume); ++ idledata->mplayer_volume = idledata->volume; + } + + if (mixer != NULL && strlen(mixer) > 0) { |
| Free embeddable forum powered by Nabble | Forum Help |