[Player-cvs] app/gtk hxstatuspositionslider.cpp,1.22,1.22.2.1

[Player-cvs] app/gtk hxstatuspositionslider.cpp,1.22,1.22.2.1

sgarg at helixcommunity.org sgarg at helixcommunity.org
Tue Jun 3 05:03:36 PDT 2008


Update of /cvsroot/player/app/gtk
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv21359

Modified Files:
      Tag: hxclient_3_1_0_atlas
	hxstatuspositionslider.cpp 
Log Message:
Porting RealPlayer to Atlas Linux

Index: hxstatuspositionslider.cpp
===================================================================
RCS file: /cvsroot/player/app/gtk/hxstatuspositionslider.cpp,v
retrieving revision 1.22
retrieving revision 1.22.2.1
diff -u -d -r1.22 -r1.22.2.1
--- hxstatuspositionslider.cpp	6 Jul 2007 20:49:18 -0000	1.22
+++ hxstatuspositionslider.cpp	3 Jun 2008 12:03:27 -0000	1.22.2.1
@@ -213,6 +213,9 @@
     UInt32 buffer_lower = 0;
     UInt32 writePosition = 0;
     UInt32 buffer_upper = 0;
+    UInt32 minBuffered = 0;
+    UInt32 maxSeekable = 0;
+    UInt32 maxBuffered = 0;
     UInt32 maxPosition = 0;
 
     HXStatusDisplayPositionSlider* position_status = HX_STATUS_DISPLAY_POSITION_SLIDER(user_data);
@@ -221,87 +224,85 @@
 
     g_return_val_if_fail(position_status->position_scale != NULL, TRUE);  // Don't remove the timeout callback.
 
+    superbuf_hscale = HX_SUPERBUF_HSCALE(position_status->position_scale);
+    g_return_val_if_fail(superbuf_hscale, TRUE);  // Don't remove the timeout callback.
+    g_return_val_if_fail(!superbuf_hscale->grab_button, TRUE);  // Don't remove the timeout callback.
+
     if(status->player)
     {
-        pos = hx_basic_playback_get_position(status->player);
-        len = hx_basic_playback_get_length(status->player);
-
         // status->player is actually HXBasicPlayback interface, not HXPlayer.
         HXPlayer* player = HX_PLAYER(status->player); 
         HXClientPlayerToken helix_client_token = hx_player_get_token(player);
         g_return_val_if_fail(helix_client_token, TRUE);  // Don't remove the timeout callback.
 
-        superbuf_ui_mode = ClientPlayerGetSuperBufferRange(helix_client_token, 
-                                                           &minPosition, 
-                                                           &writePosition, 
-                                                           &maxPosition);
-
-        superbuf_hscale = HX_SUPERBUF_HSCALE(position_status->position_scale);
-        g_return_val_if_fail(superbuf_hscale, TRUE);  // Don't remove the timeout callback.
-
-        if (superbuf_ui_mode)
-        {
             gboolean is_live_or_infinite;
 
+        pos = hx_basic_playback_get_position(status->player);
             is_live_or_infinite = hx_basic_playback_is_live(status->player) ||
                                   hx_basic_playback_is_infinite_duration(status->player);
 
+        gboolean is_superb_enabled = ClientPlayerIsSuperBufferEnabled(helix_client_token);
+        if (is_superb_enabled)
+        {
+            superbuf_ui_mode = ClientPlayerGetSuperbufferTimelineInfo(helix_client_token, 
+                                                                      &minPosition, 
+                                                                      &minBuffered, 
+                                                                      &maxSeekable,
+                                                                      &maxBuffered,
+                                                                      &maxPosition);
             if (is_live_or_infinite)
             {
-                superbuf_hscale->buffer_mode = BUFFER_MODE_LIVE;
-                buffer_lower = minPosition;
-                buffer_upper = writePosition;
-
-                if (writePosition == maxPosition)
+                superbuf_hscale->buffer_mode = HX_SUPERB_MODE_LIVE;
+                superbuf_hscale->restrict_seek_in_buffered = TRUE;
+                if (maxBuffered == maxPosition)
                 {
-                    // Add here; subtract in superbufhscale.c
+                    // Add live bg move here; subtract in superbufhscale.c
                     superbuf_hscale->live_background_moved += (guint32) 
-                        MAX( (minPosition - GTK_RANGE(superbuf_hscale)->adjustment->lower), 0);
+                        MAX( (minPosition - superbuf_hscale->adjustment->lower), 0);
                     hx_superbuf_start_animation(superbuf_hscale);
                 }
             }
-            else // OnDemand
+            else
             {
-                superbuf_hscale->buffer_mode = BUFFER_MODE_ONDEMAND;
-                buffer_lower = minPosition;
-                buffer_upper = writePosition;
+                // Superbuffer enabled and not live == OnDemand.
+                superbuf_hscale->buffer_mode = HX_SUPERB_MODE_ONDEMAND;
+                superbuf_hscale->restrict_seek_in_buffered = FALSE;
                 superbuf_hscale->live_background_moved = 0;
                 hx_superbuf_stop_animation(superbuf_hscale);
             }
 
-            if (!minPosition && !pos && !maxPosition)
-            {
-                return TRUE;   // don't remove
-            }
+            hx_superbuf_hscale_set(superbuf_hscale, 
+                                   pos,             // value
+                                   minPosition,     // lower
+                                   maxPosition,     // upper
+                                   minBuffered,     // buffer_min 
+                                   maxSeekable,     // buffer_max 
+                                   is_live_or_infinite);    // restrict_seek_in_buffered 
 
-            if (minPosition > pos) 
-            {
-                g_warning("Superbuffer minPosition (%u) > pos (%u)", (guint)minPosition, pos);
             }
-            if (pos > maxPosition)
+        else if (is_live_or_infinite)
             {
-                g_warning("Superbuffer pos (%u) > maxPosition(%u)", pos, (guint)maxPosition);
+            // Superbuffer disabled and live.
+            superbuf_hscale->buffer_mode = HX_SUPERB_MODE_NON_SUPERB;
+            superbuf_hscale->live_background_moved = 0;
+            hx_superbuf_stop_animation(superbuf_hscale);
             }
-
-            gtk_range_set_range(GTK_RANGE(position_status->position_scale), (gdouble)minPosition, (gdouble)maxPosition);
-            gtk_range_set_value(GTK_RANGE(position_status->position_scale), (gdouble)pos);
-
-            superbuf_hscale->buffer_lower = (gdouble)minPosition;
-            superbuf_hscale->buffer_upper = (gdouble)writePosition;
-        }
-        else if(len > 0) 
+        else
         {
             // Also non-superbuffer case.
-            superbuf_hscale->buffer_lower = 0.0;
-            superbuf_hscale->buffer_upper = 0.0;
-            superbuf_hscale->buffer_mode = BUFFER_MODE_NON_SUPERBUFFERED;
-            gtk_range_set_range(GTK_RANGE(position_status->position_scale), 0, (gdouble)len);
-            gtk_range_set_value(GTK_RANGE(position_status->position_scale), (gdouble)pos);
+            len = hx_basic_playback_get_length(status->player);
 
+            superbuf_hscale->buffer_mode = HX_SUPERB_MODE_NON_SUPERB;
             superbuf_hscale->live_background_moved = 0;
             hx_superbuf_stop_animation(superbuf_hscale);
+            hx_superbuf_hscale_set(superbuf_hscale, 
+                                   pos,     // value
+                                   0.0,     // lower
+                                   len,     // upper
+                                   0.0,     // buffer_min 
+                                   0.0,     // buffer_max 
+                                   FALSE);  // restrict_seek_in_buffered 
         }
-        gtk_widget_queue_draw(GTK_WIDGET(superbuf_hscale));
     }
 
     return TRUE; // don't remove




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.