0e4c53b0cd
Coppa. OK sthen@, landry@
318 lines
13 KiB
Plaintext
318 lines
13 KiB
Plaintext
$OpenBSD: patch-src_gui_c,v 1.5 2009/11/06 16:57:23 edd Exp $
|
|
|
|
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 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(),
|
|
* but that would mean we require GTK+ 2.18, so instead we call this */
|
|
+#ifdef GTK2_14_ENABLED
|
|
GDK_WINDOW_XID(gtk_widget_get_window(GTK_WIDGET(widget)));
|
|
+#endif
|
|
}
|
|
|
|
gint get_player_window()
|
|
@@ -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 =
|
|
- g_strdup_printf(_("Paused | %2i%% \342\226\274"),
|
|
+ g_strdup_printf(_("Paused | %2i%%"),
|
|
(gint) (idle->cachepercent * 100));
|
|
gmtk_media_tracker_set_text(tracker, text);
|
|
g_free(text);
|
|
@@ -561,7 +580,7 @@ gboolean set_progress_time(void *data)
|
|
|
|
if (idle->cachepercent > 0 && idle->cachepercent < 1.0 && !(playlist) && !forcecache
|
|
&& !idle->streaming) {
|
|
- g_snprintf(idle->progress_text, 128, "%s | %2i%% \342\226\274", text,
|
|
+ g_snprintf(idle->progress_text, 128, "%s | %2i%%", text,
|
|
(int) (idle->cachepercent * 100));
|
|
} else {
|
|
g_snprintf(idle->progress_text, 128, "%s", text);
|
|
@@ -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) {
|
|
- cursor_source = gdk_pixmap_new(NULL, 1, 1, 1);
|
|
- cursor =
|
|
- gdk_cursor_new_from_pixmap(cursor_source, cursor_source, &cursor_color,
|
|
- &cursor_color, 0, 0);
|
|
- 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)
|
|
+ || GTK_WIDGET_VISIBLE(menu_help)) {
|
|
+
|
|
+ gdk_window_set_cursor(window->window, NULL);
|
|
+
|
|
+ } else {
|
|
+
|
|
+ if (last_movement_time > 0 && currenttime.tv_sec > last_movement_time) {
|
|
+ cursor_source = gdk_pixmap_new(NULL, 1, 1, 1);
|
|
+ cursor =
|
|
+ gdk_cursor_new_from_pixmap(cursor_source, cursor_source, &cursor_color,
|
|
+ &cursor_color, 0, 0);
|
|
+ gdk_pixmap_unref(cursor_source);
|
|
+ gdk_window_set_cursor(window->window, cursor);
|
|
+ gdk_cursor_unref(cursor);
|
|
+ }
|
|
+ }
|
|
+
|
|
return FALSE;
|
|
}
|
|
|
|
@@ -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));
|
|
+ disable_animation =
|
|
+ (gboolean) gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(config_disable_animation));
|
|
oldosd = osdlevel;
|
|
osdlevel = (gint) gtk_range_get_value(GTK_RANGE(config_osdlevel));
|
|
pplevel = (gint) gtk_range_get_value(GTK_RANGE(config_pplevel));
|
|
@@ -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);
|
|
+ gm_pref_store_set_boolean(gm_store, DISABLEANIMATION, disable_animation);
|
|
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 +4704,41 @@ void menuitem_config_callback(GtkMenuItem * menuitem,
|
|
tooltip = gtk_tooltips_new();
|
|
gtk_tooltips_set_tip(tooltip, config_ao,
|
|
_
|
|
- ("mplayer audio output device\nalsa or oss should always work, try esd in gnome, arts in kde, or pulse on newer distributions"),
|
|
+ ("mplayer audio output device\nOn Linux, alsa or oss should always work\nTry esd in gnome, arts in kde, or pulse on newer Linux distributions\nOn OpenBSD, use sndio"),
|
|
NULL);
|
|
if (config_ao != NULL) {
|
|
gtk_combo_box_append_text(GTK_COMBO_BOX(config_ao), "alsa");
|
|
+ gtk_combo_box_append_text(GTK_COMBO_BOX(config_ao), "sndio");
|
|
+ gtk_combo_box_append_text(GTK_COMBO_BOX(config_ao), "sun");
|
|
gtk_combo_box_append_text(GTK_COMBO_BOX(config_ao), "arts");
|
|
gtk_combo_box_append_text(GTK_COMBO_BOX(config_ao), "esd");
|
|
gtk_combo_box_append_text(GTK_COMBO_BOX(config_ao), "jack");
|
|
gtk_combo_box_append_text(GTK_COMBO_BOX(config_ao), "oss");
|
|
gtk_combo_box_append_text(GTK_COMBO_BOX(config_ao), "pulse");
|
|
+ gtk_combo_box_append_text(GTK_COMBO_BOX(config_ao), "rtunes");
|
|
if (ao != NULL) {
|
|
if (strcmp(ao, "alsa") == 0)
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 0);
|
|
- if (strcmp(ao, "arts") == 0)
|
|
+ if (strcmp(ao, "sndio") == 0)
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 1);
|
|
- if (strcmp(ao, "esd") == 0)
|
|
+ if (strcmp(ao, "sun") == 0)
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 2);
|
|
- if (strcmp(ao, "jack") == 0)
|
|
+ if (strcmp(ao, "arts") == 0)
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 3);
|
|
- if (strcmp(ao, "oss") == 0)
|
|
+ if (strcmp(ao, "esd") == 0)
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 4);
|
|
- if (strcmp(ao, "pulse") == 0)
|
|
+ if (strcmp(ao, "jack") == 0)
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 5);
|
|
+ if (strcmp(ao, "oss") == 0)
|
|
+ gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 6);
|
|
+ if (strcmp(ao, "pulse") == 0)
|
|
+ gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 7);
|
|
+ if (strcmp(ao, "rtunes") == 0)
|
|
+ gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 8);
|
|
if (gtk_combo_box_get_active(GTK_COMBO_BOX(config_ao))
|
|
== -1) {
|
|
gtk_combo_box_append_text(GTK_COMBO_BOX(config_ao), ao);
|
|
- gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 6);
|
|
+ gtk_combo_box_set_active(GTK_COMBO_BOX(config_ao), 9);
|
|
}
|
|
}
|
|
}
|
|
@@ -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++;
|
|
+
|
|
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();
|