[Player-cvs] app/gtk embeddedapp.cpp,1.53,1.54

[Player-cvs] app/gtk embeddedapp.cpp,1.53,1.54

rggammon at helixcommunity.org rggammon at helixcommunity.org
Fri Jul 23 17:48:42 PDT 2004


Update 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);
     }
 




More information about the Player-cvs mailing list
 

Site Map   |   Terms of Use   |   Privacy Policy   |   Contact Us

Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.