[Player-cvs] app/gtk embeddedapp.cpp,1.53,1.54
rggammon at helixcommunity.org rggammon at helixcommunity.orgUpdate of /cvsroot/player/app/gtk
In directory cvs-new:/tmp/cvs-serv14712
Modified Files:
embeddedapp.cpp
Log Message:
fix 2729
Index: embeddedapp.cpp
===================================================================
RCS file: /cvsroot/player/app/gtk/embeddedapp.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- embeddedapp.cpp 12 Jul 2004 22:30:06 -0000 1.53
+++ embeddedapp.cpp 24 Jul 2004 00:48:40 -0000 1.54
@@ -213,7 +213,6 @@
GdkPixbuf* mid_pixbuf;
GdkPixbuf* high_pixbuf;
- HXPlayer* player;
} HXEmbeddedWindowMuteCtrl;
typedef struct
@@ -268,8 +267,6 @@
GdkPixbuf* mid_pixbuf;
GdkPixbuf* high_pixbuf;
- HXPlayer* player;
-
} HXEmbeddedWindowMuteVolumePopup;
typedef struct
@@ -441,6 +438,8 @@
static GtkWidget* create_controls_image_window (HXEmbeddedWindow* window);
+static void popup_volume_update_icons (HXEmbeddedWindow* window);
+static void hxembedded_window_update_volume_icons(HXEmbeddedWindow* window);
/* hxembedded_window_get_player may create a player if none exists */
static HXPlayer* hxembedded_window_get_player (HXEmbeddedWindow* window);
@@ -452,6 +451,47 @@
player can be found in g_hxcommon_app. */
static HXEmbeddedApp g_hxembedded_app;
+static void
+hxwindow_update_mute_ctrl_icons(HXEmbeddedWindow* window)
+{
+ HXPlayer* player = hxembedded_window_get_player_no_create(window);
+
+ gboolean mute = FALSE;
+ guint vol = 0;
+
+ if(player)
+ {
+ mute = hx_player_is_muted(HX_PLAYER(player));
+ vol = hx_player_get_volume(HX_PLAYER(player));
+ }
+
+ if(mute)
+ {
+ gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_ctrl->image),
+ window->mute_ctrl->mute_pixbuf);
+ }
+ else if(vol == 0)
+ {
+ gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_ctrl->image),
+ window->mute_ctrl->off_pixbuf);
+ }
+ else if(vol < 33)
+ {
+ gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_ctrl->image),
+ window->mute_ctrl->low_pixbuf);
+ }
+ else if(vol < 66)
+ {
+ gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_ctrl->image),
+ window->mute_ctrl->mid_pixbuf);
+ }
+ else
+ {
+ gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_ctrl->image),
+ window->mute_ctrl->high_pixbuf);
+ }
+}
+
/* hxembedded_console implementation
* =================================
*/
@@ -542,54 +582,58 @@
window->copyright_observer = hx_statistics_observer_new(player, "copyright");
}
- /* Setup callbacks into widgets */
- if(window->info_panel ||
- window->position_field ||
- window->status_field ||
- window->position_slider ||
- window->tac_ctrl ||
- window->volume_slider ||
- window->congestion)
+ player = hxembedded_window_get_player_no_create(window);
+ if(player)
{
- player = hxembedded_window_get_player(window);
- if(player)
+ if(window->info_panel)
{
- if(window->info_panel)
- {
- hxstatus_display_set_player(HX_STATUS_DISPLAY(window->info_panel),
- player);
- }
- if(window->position_field)
- {
- hxstatus_display_set_player(HX_STATUS_DISPLAY(window->position_field),
- player);
- }
- if(window->status_field)
- {
- hxstatus_display_set_player(HX_STATUS_DISPLAY(window->status_field),
- player);
- }
- if(window->position_slider)
- {
- hxstatus_display_set_player(HX_STATUS_DISPLAY(window->position_slider),
- player);
- }
- if(window->tac_ctrl)
- {
- hxstatus_display_set_player(HX_STATUS_DISPLAY(window->tac_ctrl),
- player);
- }
- if(window->congestion)
- {
- hxstatus_display_set_player(HX_STATUS_DISPLAY(window->congestion),
- player);
- }
- if(window->volume_slider)
- {
- guint vol;
- vol = hx_player_get_volume(player);
- gtk_range_set_value(GTK_RANGE(window->volume_slider->scale), (gdouble) vol);
- }
+ hxstatus_display_set_player(HX_STATUS_DISPLAY(window->info_panel),
+ player);
+ }
+ if(window->position_field)
+ {
+ hxstatus_display_set_player(HX_STATUS_DISPLAY(window->position_field),
+ player);
+ }
+ if(window->status_field)
+ {
+ hxstatus_display_set_player(HX_STATUS_DISPLAY(window->status_field),
+ player);
+ }
+ if(window->position_slider)
+ {
+ hxstatus_display_set_player(HX_STATUS_DISPLAY(window->position_slider),
+ player);
+ }
+ if(window->tac_ctrl)
+ {
+ hxstatus_display_set_player(HX_STATUS_DISPLAY(window->tac_ctrl),
+ player);
+ }
+ if(window->congestion)
+ {
+ hxstatus_display_set_player(HX_STATUS_DISPLAY(window->congestion),
+ player);
+ }
+ if(window->volume_slider)
+ {
+ guint vol;
+ vol = hx_player_get_volume(player);
+ gtk_range_set_value(GTK_RANGE(window->volume_slider->scale), (gdouble) vol);
+ }
+ if(window->mute_ctrl)
+ {
+ gboolean muted;
+ muted = hx_player_is_muted(player);
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->mute_ctrl->button),
+ muted);
+
+ hxembedded_window_update_volume_icons (window);
+ }
+ if(window->mute_volume_popup)
+ {
+ popup_volume_update_icons(window);
}
}
@@ -757,23 +801,6 @@
}
-static HXPlayer*
-hxembedded_window_get_player(HXEmbeddedWindow* window)
-{
- HXPlayer* player = hxembedded_window_get_player_no_create(window);
-
- if(!player)
- {
- GtkWidget* widget = hx_player_new();
- player = HX_PLAYER(widget);
- window->console->audio_player = player;
-
- hxembedded_console_adopt_player(window->console);
- }
-
- return player;
-}
-
static gint
hxembedded_window_popup_menu(HXEmbeddedWindow* window,
GdkEvent* event,
@@ -800,6 +827,113 @@
return FALSE; // propagate
}
+static HXPlayer*
+hxembedded_window_get_player(HXEmbeddedWindow* window)
+{
+ HXPlayer* player = hxembedded_window_get_player_no_create(window);
+
+ if(!player)
+ {
+ GtkWidget* widget = hx_player_new();
+ player = HX_PLAYER(widget);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "button_press_event",
+ G_CALLBACK(hxembedded_window_popup_menu),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "hxerror",
+ G_CALLBACK(hepw_hxerror),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "request_upgrade",
+ G_CALLBACK(hepw_request_upgrade),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "request_authentication",
+ G_CALLBACK(hepw_request_authentication),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "has_feature",
+ G_CALLBACK(hxcommon_player_has_feature),
+ player);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "play",
+ G_CALLBACK(hepw_play_buffer_contact),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "buffering",
+ G_CALLBACK(hepw_play_buffer_contact),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "contacting",
+ G_CALLBACK(hepw_play_buffer_contact),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "pause",
+ G_CALLBACK(hepw_pause),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "stop",
+ G_CALLBACK(hepw_stop),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "mute_changed",
+ G_CALLBACK(hepw_mute_changed),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "volume_changed",
+ G_CALLBACK(hepw_volume_changed),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "goto_url",
+ G_CALLBACK(hepw_goto_url),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "open_window",
+ G_CALLBACK(hepw_open_window),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "start_seeking",
+ G_CALLBACK(hepw_start_seeking),
+ window);
+
+ g_signal_connect_swapped(G_OBJECT(player),
+ "stop_seeking",
+ G_CALLBACK(hepw_stop_seeking),
+ window);
+
+ hxcommon_show_status_in_player_widget(HX_PLAYER(player));
+
+ if(window->image_window)
+ {
+ window->image_window->player = player;
+ }
+ else
+ {
+ window->console->audio_player = player;
+ }
+
+ hxembedded_console_adopt_player(window->console);
+ }
+
+ return player;
+}
+
HXContentStateType
hxembedded_window_get_content_state(HXEmbeddedWindow* window)
{
@@ -1663,8 +1797,8 @@
create_controls_image_window(HXEmbeddedWindow* window)
{
GtkWidget* hxbin;
- GtkWidget* player;
GValue val;
+ GtkWidget* player;
hxbin = hx_bin_new();
g_return_val_if_fail(hxbin != NULL, FALSE);
@@ -1678,10 +1812,15 @@
window);
gtk_widget_show(hxbin);
-
- player = hx_player_new();
- g_return_val_if_fail(player != NULL, FALSE);
+ window->image_window = g_new0(HXEmbeddedWindowImageWindow, 1);
+
+ window->image_window->player = hxembedded_window_get_player(window);
+ window->image_window->hxbin = HX_BIN(hxbin);
+ window->image_window->context_menu = hx_context_menu_new_with_player(window->image_window->player);
+
+ player = GTK_WIDGET(window->image_window->player);
+
if(window->attr.nologo)
{
hx_player_set_logo_pixmap(HX_PLAYER(player), NULL);
@@ -1720,94 +1859,7 @@
/* Add the video widget to hxbin */
gtk_container_add(GTK_CONTAINER(hxbin), player);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "button_press_event",
- G_CALLBACK(hxembedded_window_popup_menu),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "hxerror",
- G_CALLBACK(hepw_hxerror),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "request_upgrade",
- G_CALLBACK(hepw_request_upgrade),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "request_authentication",
- G_CALLBACK(hepw_request_authentication),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "has_feature",
- G_CALLBACK(hxcommon_player_has_feature),
- player);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "play",
- G_CALLBACK(hepw_play_buffer_contact),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "buffering",
- G_CALLBACK(hepw_play_buffer_contact),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "contacting",
- G_CALLBACK(hepw_play_buffer_contact),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "pause",
- G_CALLBACK(hepw_pause),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "stop",
- G_CALLBACK(hepw_stop),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "mute_changed",
- G_CALLBACK(hepw_mute_changed),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "volume_changed",
- G_CALLBACK(hepw_volume_changed),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "goto_url",
- G_CALLBACK(hepw_goto_url),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "open_window",
- G_CALLBACK(hepw_open_window),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "start_seeking",
- G_CALLBACK(hepw_start_seeking),
- window);
-
- g_signal_connect_swapped(G_OBJECT(player),
- "stop_seeking",
- G_CALLBACK(hepw_stop_seeking),
- window);
-
- hxcommon_show_status_in_player_widget(HX_PLAYER(player));
-
- window->image_window = g_new0(HXEmbeddedWindowImageWindow, 1);
- window->image_window->player = HX_PLAYER(player);
- window->image_window->hxbin = HX_BIN(hxbin);
- window->image_window->context_menu = hx_context_menu_new_with_player(window->image_window->player);
-
+
return hxbin;
}
@@ -1823,43 +1875,6 @@
}
static void
-mute_ctrl_update_icons(HXEmbeddedWindow* window)
-{
- HXPlayer* player = hxembedded_window_get_player(window);
-
- g_return_if_fail(player != NULL && player != NULL);
-
- gboolean mute = hx_player_is_muted(HX_PLAYER(player));
- guint vol = hx_player_get_volume(HX_PLAYER(player));
-
- if(mute)
- {
- gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_ctrl->image),
- window->mute_ctrl->mute_pixbuf);
- }
- else if(vol == 0)
- {
- gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_ctrl->image),
- window->mute_ctrl->off_pixbuf);
- }
- else if(vol < 33)
- {
- gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_ctrl->image),
- window->mute_ctrl->low_pixbuf);
- }
- else if(vol < 66)
- {
- gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_ctrl->image),
- window->mute_ctrl->mid_pixbuf);
- }
- else
- {
- gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_ctrl->image),
- window->mute_ctrl->high_pixbuf);
- }
-}
-
-static void
mute_ctrl_destroy(HXEmbeddedWindow* window)
{
g_object_unref(window->mute_ctrl->mute_pixbuf);
@@ -1877,7 +1892,6 @@
GtkWidget* image;
gchar* filename;
GError* error = NULL;
- HXPlayer* player = hxembedded_window_get_player(window);
window->mute_ctrl = g_new0(HXEmbeddedWindowMuteCtrl, 1);
@@ -1910,7 +1924,6 @@
gtk_container_add(GTK_CONTAINER(button), image);
window->mute_ctrl->button = button;
- window->mute_ctrl->player = player;
window->mute_ctrl->image = image;
g_signal_connect(GTK_OBJECT(button),
@@ -1923,12 +1936,8 @@
G_CALLBACK(mute_ctrl_destroy),
(gpointer)window);
- g_signal_connect_swapped(G_OBJECT(player),
- "volume_changed",
- G_CALLBACK(mute_ctrl_update_icons),
- (gpointer)window);
- mute_ctrl_update_icons(window);
+ hxwindow_update_mute_ctrl_icons(window);
return alignment;
}
@@ -2254,13 +2263,17 @@
static void
popup_volume_update_icons(HXEmbeddedWindow* window)
{
- HXPlayer* player = hxembedded_window_get_player(window);
-
- g_return_if_fail(player != NULL && player != NULL);
-
- gboolean mute = hx_player_is_muted(HX_PLAYER(player));
- guint vol = hx_player_get_volume(HX_PLAYER(player));
+ HXPlayer* player = hxembedded_window_get_player_no_create(window);
+ gboolean mute = FALSE;
+ guint vol = 0;
+
+ if(player)
+ {
+ mute = hx_player_is_muted(HX_PLAYER(player));
+ vol = hx_player_get_volume(HX_PLAYER(player));
+ }
+
if(mute)
{
gtk_image_set_from_pixbuf(GTK_IMAGE(window->mute_volume_popup->image),
@@ -2312,7 +2325,7 @@
gchar* filename;
GError* error = NULL;
- HXPlayer* player = hxembedded_window_get_player(window);
+ HXPlayer* player = hxembedded_window_get_player_no_create(window);
window->mute_volume_popup = g_new0(HXEmbeddedWindowMuteVolumePopup, 1);
@@ -2354,11 +2367,6 @@
G_CALLBACK(popup_volume_destroy),
(gpointer)window);
- g_signal_connect_swapped(G_OBJECT(player),
- "volume_changed",
- G_CALLBACK(popup_volume_update_icons),
- (gpointer)window);
-
/* Create the popup window */
window->mute_volume_popup->popup_window = gtk_window_new(GTK_WINDOW_POPUP);
gtk_window_set_resizable (GTK_WINDOW (window->mute_volume_popup->popup_window), FALSE);
@@ -2370,7 +2378,6 @@
gtk_container_add(GTK_CONTAINER(window->mute_volume_popup->popup_window), mute_volume);
- window->mute_volume_popup->player = player;
window->mute_volume_popup->button = button;
window->mute_volume_popup->image = image;
@@ -2500,7 +2507,7 @@
{
if(window->mute_ctrl)
{
- mute_ctrl_update_icons(window);
+ hxwindow_update_mute_ctrl_icons(window);
}
if(window->mute_volume_popup)
@@ -5111,8 +5118,17 @@
{
gtk_range_set_value(GTK_RANGE(window->volume_slider->scale),
(gdouble) vol);
- }
-
+ }
+ if(window->mute_ctrl)
+ {
+ hxwindow_update_mute_ctrl_icons(window);
+ }
+
+ if(window->mute_volume_popup)
+ {
+ popup_volume_update_icons(window);
+ }
+
windows_list_iter = g_list_next(windows_list_iter);
}