]> git.sesse.net Git - vlc/commitdiff
Added a new INPUT_GET_BOOKMARK to allow future safe bookmark.
authorLaurent Aimar <fenrir@videolan.org>
Tue, 2 Dec 2008 19:01:02 +0000 (20:01 +0100)
committerLaurent Aimar <fenrir@videolan.org>
Thu, 4 Dec 2008 19:34:06 +0000 (20:34 +0100)
 It removes the need of INPUT_GET_BYTE_POSITION/INPUT_SET_BYTE_SIZE which where
not thread safe.

include/vlc_input.h
modules/gui/macosx/bookmarks.m
modules/gui/qt4/dialogs/bookmarks.cpp
modules/gui/wxwidgets/dialogs/bookmarks.cpp
src/input/control.c

index 53213f33289a36a75bea8884f803f15d089a89f6..94ce851f7774de8c3d4ae014bafe9cfaa5c259ef 100644 (file)
@@ -617,11 +617,10 @@ enum input_query_e
     INPUT_ADD_OPTION,      /* arg1= char * arg2= char *  res=can fail*/
 
     /* Input properties */
-    INPUT_GET_BYTE_POSITION,     /* arg1= int64_t *       res=    */
-    INPUT_SET_BYTE_SIZE,         /* arg1= int64_t *       res=    */
     INPUT_GET_VIDEO_FPS,         /* arg1= double *        res=can fail */
 
     /* bookmarks */
+    INPUT_GET_BOOKMARK,    /* arg1= seekpoint_t *               res=can fail */
     INPUT_GET_BOOKMARKS,   /* arg1= seekpoint_t *** arg2= int * res=can fail */
     INPUT_CLEAR_BOOKMARKS, /* res=can fail */
     INPUT_ADD_BOOKMARK,    /* arg1= seekpoint_t *  res=can fail   */
index f0fb02e7171b049dcc2fbd2257b75f935c187783..754899b4486059f2773ba3b080511b9d651f1a72 100644 (file)
@@ -120,17 +120,12 @@ static VLCBookmarks *_o_sharedInstance = nil;
     if( !p_input ) return;
  
     seekpoint_t bookmark;
-    vlc_value_t pos;
-    bookmark.psz_name = NULL;
-    bookmark.i_byte_offset = 0;
-    bookmark.i_time_offset = 0;
-    var_Get( VLCIntf, "position", &pos);
-    bookmark.psz_name = _("Untitled");
-    input_Control( p_input, INPUT_GET_BYTE_POSITION, &bookmark.i_byte_offset );
-    var_Get( p_input, "time", &pos );
-    bookmark.i_time_offset = pos.i_time;
-    input_Control( p_input, INPUT_ADD_BOOKMARK, &bookmark );
+
+    if( !input_Control( p_input, INPUT_GET_BOOKMARK, &bookmark ) )
+       {
+               bookmark.psz_name = _("Untitled");
+               input_Control( p_input, INPUT_ADD_BOOKMARK, &bookmark );
+       }
  
     vlc_object_release( p_input );
  
index 750333898d36a42c26eb5017228a7a01ffee998d..e84cb4fd62b8a4fc4a5ebf4935e649a163ad7064 100644 (file)
@@ -146,19 +146,15 @@ void BookmarksDialog::add()
     if( !p_input ) return;
 
     seekpoint_t bookmark;
-    vlc_value_t pos;
-    bookmark.psz_name = qtu( THEMIM->getIM()->getName() +
-                    QString("_%1" ).arg( bookmarksList->topLevelItemCount() ) );
-    bookmark.i_byte_offset = 0;
-    bookmark.i_time_offset = 0;
 
-    input_Control( p_input, INPUT_GET_BYTE_POSITION, &bookmark.i_byte_offset );
-    var_Get( p_input, "time", &pos );
-    bookmark.i_time_offset = pos.i_time;
-    input_Control( p_input, INPUT_ADD_BOOKMARK, &bookmark );
+    if( !input_Control( p_input, INPUT_GET_BOOKMARK, &bookmark ) )
+    {
+        bookmark.psz_name = qtu( THEMIM->getIM()->getName() +
+                                 QString("_%1" ).arg( bookmarksList->topLevelItemCount() ) );
 
+        input_Control( p_input, INPUT_ADD_BOOKMARK, &bookmark );
+    }
     update();
-
 }
 
 void BookmarksDialog::del()
index fb980c1283d983d5df493b8d383876dc8e023dc5..622c8f1054e8fb27b7c9cb5cb8d777d110cd4540 100644 (file)
@@ -283,17 +283,12 @@ void BookmarksDialog::OnAdd( wxCommandEvent& event )
     if( !p_input ) return;
 
     seekpoint_t bookmark;
-    vlc_value_t pos;
-    bookmark.psz_name = NULL;
-    bookmark.i_byte_offset = 0;
-    bookmark.i_time_offset = 0;
-
-    var_Get( p_input, "position", &pos );
-    bookmark.psz_name = NULL;
-    input_Control( p_input, INPUT_GET_BYTE_POSITION, &bookmark.i_byte_offset );
-    var_Get( p_input, "time", &pos );
-    bookmark.i_time_offset = pos.i_time;
-    input_Control( p_input, INPUT_ADD_BOOKMARK, &bookmark );
+
+    if( !input_Control( p_input, INPUT_GET_BOOKMARK, &bookmark ) )
+    {
+        bookmark.psz_name = NULL;
+        input_Control( p_input, INPUT_ADD_BOOKMARK, &bookmark );
+    }
     vlc_object_release( p_input );
 
     Update();
index d7960378f93c93f10b0c8bc13a8087171e6cfe96..838a6029625ca1f1642bf47e58e96b5be3dcef5e 100644 (file)
@@ -384,6 +384,19 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
 
             break;
 
+        case INPUT_GET_BOOKMARK:
+            p_bkmk = (seekpoint_t *)va_arg( args, seekpoint_t * );
+
+            memset( p_bkmk, 0, sizeof(*p_bkmk) );
+            p_bkmk->psz_name = NULL;
+            p_bkmk->i_level = 0;
+            p_bkmk->i_byte_offset = 0;
+            /* FIXME not safe at all ! */
+            if( p_input->p->input.p_stream )
+                p_bkmk->i_byte_offset = stream_Tell( p_input->p->input.p_stream );
+            p_bkmk->i_time_offset = var_GetTime( p_input, "time" );
+            return VLC_SUCCESS;
+
         case INPUT_ADD_OPTION:
         {
             const char *psz_option = va_arg( args, const char * );
@@ -400,18 +413,6 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             return i;
         }
 
-        case INPUT_GET_BYTE_POSITION:
-            pi_64 = (int64_t*)va_arg( args, int64_t * );
-            *pi_64 = !p_input->p->input.p_stream ? 0 :
-                stream_Tell( p_input->p->input.p_stream );
-            return VLC_SUCCESS;
-
-        case INPUT_SET_BYTE_SIZE:
-            pi_64 = (int64_t*)va_arg( args, int64_t * );
-            *pi_64 = !p_input->p->input.p_stream ? 0 :
-                stream_Size( p_input->p->input.p_stream );
-            return VLC_SUCCESS;
-
         case INPUT_GET_VIDEO_FPS:
         {
             int i;