]> git.sesse.net Git - vlc/commitdiff
* backport of [11511] [11512] and [11513]
authorDerk-Jan Hartman <hartman@videolan.org>
Fri, 24 Jun 2005 20:14:28 +0000 (20:14 +0000)
committerDerk-Jan Hartman <hartman@videolan.org>
Fri, 24 Jun 2005 20:14:28 +0000 (20:14 +0000)
extras/contrib/src/packages.mak
modules/gui/macosx/playlist.m
modules/video_output/opengl.c

index b65679b1e329f27805cfc0b2de5d633104ed84bf..6922a72666c036c77ffaa6b3f0befe1b99906c2d 100644 (file)
@@ -89,7 +89,7 @@ LIBDVDNAV_VERSION=0.1.10
 LIBDVDNAV_URL=$(VIDEOLAN)/testing/contrib/libdvdnav-$(LIBDVDNAV_VERSION).tar.gz
 LIBDVBPSI_VERSION=0.1.5
 LIBDVBPSI_URL=$(VIDEOLAN)/contrib/libdvbpsi3-$(LIBDVBPSI_VERSION).tar.gz
-LIVEDOTCOM_VERSION=2005.05.26a
+LIVEDOTCOM_VERSION=2005.06.16
 LIVEDOTCOM_URL=ftp://ftp.videolan.org/pub/videolan/contrib/live.$(LIVEDOTCOM_VERSION).tar.gz
 #GOOM_URL=$(VIDEOLAN)/testing/contrib/goom-macosx-altivec-bin.tar.gz
 GOOM2k4_VERSION=2k4-0
index 40a51678615bd3f4287e9b4e2e6fa6e29ca7cec4..700eeda8d48ee699356b21f3495f0c0fb6ded768 100644 (file)
@@ -353,62 +353,26 @@ belongs to an Apple hidden private API, and then can "disapear" at any time*/
     vlc_object_release(p_playlist);
 }
 
-
-- (BOOL)isItem: (playlist_item_t *)p_item inNode: (playlist_item_t *)p_node
+- (BOOL)isValueItem: (id)o_item inNode: (id)o_node
 {
-    playlist_t * p_playlist = vlc_object_find( VLCIntf, VLC_OBJECT_PLAYLIST,
-                                          FIND_ANYWHERE );
-    playlist_item_t *p_temp_item = p_item;
-
-    if( p_playlist == NULL )
-    {
-        return NO;
-    }
-
-    if ( p_temp_item )
-    {
-        int i;
-        vlc_mutex_lock( &p_playlist->object_lock );
-
-        /* Since outlineView: willDisplayCell:... may call this function with
-           p_items that don't exist anymore, first check if the item is still
-           in the playlist. Any cleaner solution welcomed. */
-
-        for ( i = 0 ; i < p_playlist->i_all_size ; i++ )
+    int i;
+    int i_total = [[o_outline_view dataSource] outlineView:o_outline_view
+                                        numberOfChildrenOfItem: o_node];
+    for( i = 0 ; i < i_total ; i++ )
+    {
+        id o_temp_item = [[o_outline_view dataSource] outlineView:
+                                    o_outline_view child:i ofItem: o_node];
+        if( [[o_outline_view dataSource] outlineView:o_outline_view
+                                    numberOfChildrenOfItem: o_temp_item] > 0 )
         {
-            if( p_playlist->pp_all_items[i] == p_item ) break;
-            else if ( i == p_playlist->i_all_size - 1 )
-            {
-                vlc_object_release( p_playlist );
-                vlc_mutex_unlock( &p_playlist->object_lock );
-                return NO;
-            }
+            if( [self isValueItem: o_item inNode: o_temp_item] == YES )
+            return YES;
         }
-
-        while( p_temp_item->i_parents > 0 )
+        else if( [o_temp_item isEqual: o_item] )
         {
-            for( i = 0; i < p_temp_item->i_parents ; i++ )
-            {
-                if( p_temp_item->pp_parents[i]->i_view == i_current_view )
-                {
-                    if( p_temp_item->pp_parents[i]->p_parent == p_node )
-                    {
-                        vlc_mutex_unlock( &p_playlist->object_lock );
-                        vlc_object_release( p_playlist );
-                        return YES;
-                    }
-                    else
-                    {
-                        p_temp_item = p_temp_item->pp_parents[i]->p_parent;
-                        break;
-                    }
-                }
-            }
-            vlc_mutex_unlock( &p_playlist->object_lock );
+            return YES;
         }
     }
-
-    vlc_object_release( p_playlist );
     return NO;
 }
 
@@ -523,18 +487,21 @@ belongs to an Apple hidden private API, and then can "disapear" at any time*/
 
     for( i = 0; i < i_count; i++ )
     {
-        playlist_item_t * p_item;
         o_number = [o_to_delete lastObject];
         i_row = [o_number intValue];
+        id o_item = [o_outline_view itemAtRow: i_row];
+        playlist_item_t *p_item = [o_item pointerValue];
         [o_to_delete removeObject: o_number];
         [o_outline_view deselectRow: i_row];
 
-        p_item = (playlist_item_t *)[[o_outline_view itemAtRow: i_row] pointerValue];
-
-        if( p_item->i_children > -1 ) //is a node and not an item
+        if( [[o_outline_view dataSource] outlineView:o_outline_view
+                                        numberOfChildrenOfItem: o_item]  > 0 )
+        //is a node and not an item
         {
+            id o_playing_item = [o_outline_dict objectForKey:
+                [NSString stringWithFormat: @"%p", p_playlist->status.p_item]];
             if( p_playlist->status.i_status != PLAYLIST_STOPPED &&
-                [self isItem: p_playlist->status.p_item inNode: p_item] == YES )
+                [self isValueItem: o_playing_item inNode: o_item] == YES )
             {
                 // if current item is in selected node and is playing then stop playlist
                 playlist_Stop( p_playlist );
@@ -1059,14 +1026,16 @@ belongs to an Apple hidden private API, and then can "disapear" at any time*/
 {
     playlist_t *p_playlist = vlc_object_find( VLCIntf, VLC_OBJECT_PLAYLIST,
                                           FIND_ANYWHERE );
-    playlist_item_t *p_item;
+
+    id o_playing_item;
 
     if( !p_playlist ) return;
 
-    p_item = (playlist_item_t *)[item pointerValue];
-    if( ( p_item == p_playlist->status.p_item ) ||
-            ( p_item->i_children != 0 &&
-            [self isItem: p_playlist->status.p_item inNode: p_item] ) )
+    o_playing_item = [o_outline_dict objectForKey:
+                [NSString stringWithFormat:@"%p",  p_playlist->status.p_item]];
+
+    if( [self isValueItem: o_playing_item inNode: item] ||
+                                                [o_playing_item isEqual: item] )
     {
         [cell setFont: [NSFont boldSystemFontOfSize: 0]];
     }
index 336d4c66bd8ea852859fbecbc2afc78eaeae8587..fd185d684bfdec92536dbb45fd64f2dc849d2ba5 100644 (file)
 #define VLCGL_TYPE   VLCGL_RGB_TYPE
 #endif
 
-#ifndef GL_CLAMP_TO_EDGE
-#   define GL_CLAMP_TO_EDGE 0x812F
-#endif
-
 /* OpenGL effects */
 #define OPENGL_EFFECT_NONE             1
 #define OPENGL_EFFECT_CUBE             2
@@ -96,6 +92,10 @@ static int InitTextures( vout_thread_t * );
 static int SendEvents( vlc_object_t *, char const *,
                        vlc_value_t, vlc_value_t, void * );
 
+/*****************************************************************************
+ * Module descriptor
+ *****************************************************************************/
+#define SPEED_TEXT N_( "OpenGL cube rotation speed" )
 /*****************************************************************************
  * Module descriptor
  *****************************************************************************/
@@ -589,10 +589,10 @@ static void DisplayVideo( vout_thread_t *p_vout, picture_t *p_pic )
     {
         glEnable( VLCGL_TARGET );
         glBegin( GL_POLYGON );
-        glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, 1.0 );
-        glTexCoord2f( f_width, 0.0 ); glVertex2f( 1.0, 1.0 );
-        glTexCoord2f( f_width, f_height ); glVertex2f( 1.0, -1.0 );
-        glTexCoord2f( 0.0, f_height ); glVertex2f( -1.0, -1.0 );
+        glTexCoord2f( 0.5, 0.5 ); glVertex2f( -1.0, 1.0 );
+        glTexCoord2f( f_width - 0.5, 0.5 ); glVertex2f( 1.0, 1.0 );
+        glTexCoord2f( f_width - 0.5, f_height - 0.5 ); glVertex2f( 1.0, -1.0 );
+        glTexCoord2f( 0.5, f_height - 0.5 ); glVertex2f( -1.0, -1.0 );
         glEnd();
     }
     else
@@ -603,40 +603,36 @@ static void DisplayVideo( vout_thread_t *p_vout, picture_t *p_pic )
         glBegin( GL_QUADS );
 
         /* Front */
-        glTexCoord2f( 0, 0 ); glVertex3f( - 1.0, 1.0, 1.0 );
-        glTexCoord2f( 0, f_height ); glVertex3f( - 1.0, - 1.0, 1.0 );
-        glTexCoord2f( f_width, f_height ); glVertex3f( 1.0, - 1.0, 1.0 );
-        glTexCoord2f( f_width, 0 ); glVertex3f( 1.0, 1.0, 1.0 );
+        glTexCoord2f( 0.5, 0.5 ); glVertex3f( - 1.0, 1.0, 1.0 );
+        glTexCoord2f( 0.5, f_height - 0.5 ); glVertex3f( - 1.0, - 1.0, 1.0 );
+        glTexCoord2f( f_width - 0.5, f_height - 0.5 ); glVertex3f( 1.0, - 1.0, 1.0 );
+        glTexCoord2f( f_width - 0.5, 0.5 ); glVertex3f( 1.0, 1.0, 1.0 );
 
         /* Left */
-        glTexCoord2f( 0, 0 ); glVertex3f( - 1.0, 1.0, - 1.0 );
-        glTexCoord2f( 0, f_height ); glVertex3f( - 1.0, - 1.0, - 1.0 );
-        glTexCoord2f( f_width, f_height ); glVertex3f( - 1.0, - 1.0, 1.0 );
-        glTexCoord2f( f_width, 0 ); glVertex3f( - 1.0, 1.0, 1.0 );
+        glTexCoord2f( 0.5, 0.5 ); glVertex3f( - 1.0, 1.0, - 1.0 );
+        glTexCoord2f( 0.5, f_height - 0.5 ); glVertex3f( - 1.0, - 1.0, - 1.0 );
+        glTexCoord2f( f_width - 0.5, f_height - 0.5 ); glVertex3f( - 1.0, - 1.0, 1.0 );
+        glTexCoord2f( f_width - 0.5, 0.5 ); glVertex3f( - 1.0, 1.0, 1.0 );
 
         /* Back */
-        glTexCoord2f( 0, 0 ); glVertex3f( 1.0, 1.0, - 1.0 );
-        glTexCoord2f( 0, f_height ); glVertex3f( 1.0, - 1.0, - 1.0 );
-        glTexCoord2f( f_width, f_height ); glVertex3f( - 1.0, - 1.0, - 1.0 );
-        glTexCoord2f( f_width, 0 ); glVertex3f( - 1.0, 1.0, - 1.0 );
+        glTexCoord2f( 0.5, 0.5 ); glVertex3f( 1.0, 1.0, - 1.0 );
+        glTexCoord2f( 0.5, f_height - 0.5 ); glVertex3f( 1.0, - 1.0, - 1.0 );
+        glTexCoord2f( f_width - 0.5, f_height - 0.5 ); glVertex3f( - 1.0, - 1.0, - 1.0 );
+        glTexCoord2f( f_width - 0.5, 0.5 ); glVertex3f( - 1.0, 1.0, - 1.0 );
 
         /* Right */
-        glTexCoord2f( 0, 0 ); glVertex3f( 1.0, 1.0, 1.0 );
-        glTexCoord2f( 0, f_height ); glVertex3f( 1.0, - 1.0, 1.0 );
-        glTexCoord2f( f_width, f_height ); glVertex3f( 1.0, - 1.0, - 1.0 );
-        glTexCoord2f( f_width, 0 ); glVertex3f( 1.0, 1.0, - 1.0 );
+        glTexCoord2f( 0.5, 0.5 ); glVertex3f( 1.0, 1.0, 1.0 );
+        glTexCoord2f( 0.5, f_height - 0.5 ); glVertex3f( 1.0, - 1.0, 1.0 );
+        glTexCoord2f( f_width - 0.5, f_height - 0.5 ); glVertex3f( 1.0, - 1.0, - 1.0 );
+        glTexCoord2f( f_width - 0.5, 0.5 ); glVertex3f( 1.0, 1.0, - 1.0 );
 
         /* Top */
-        glTexCoord2f( 0, 0 ); glVertex3f( - 1.0, 1.0, - 1.0 );
-        glTexCoord2f( 0, f_height ); glVertex3f( - 1.0, 1.0, 1.0 );
-        glTexCoord2f( f_width, f_height ); glVertex3f( 1.0, 1.0, 1.0 );
-        glTexCoord2f( f_width, 0 ); glVertex3f( 1.0, 1.0, - 1.0 );
-
-        /* Bottom */
-        glTexCoord2f( 0, 0 ); glVertex3f( - 1.0, - 1.0, 1.0 );
-        glTexCoord2f( 0, f_height ); glVertex3f( - 1.0, - 1.0, - 1.0 );
-        glTexCoord2f( f_width, f_height ); glVertex3f( 1.0, - 1.0, - 1.0 );
-        glTexCoord2f( f_width, 0 ); glVertex3f( 1.0, - 1.0, 1.0 );
+        glTexCoord2f( 0.5, 0.5 ); glVertex3f( - 1.0, 1.0, - 1.0 );
+        glTexCoord2f( 0.5, f_height - 0.5 ); glVertex3f( - 1.0, 1.0, 1.0 );
+        glTexCoord2f( f_width - 0.5, f_height - 0.5 ); glVertex3f( 1.0, 1.0, 1.0 );
+        glTexCoord2f( 0.5, f_height - 0.5 ); glVertex3f( - 1.0, - 1.0, - 1.0 );
+        glTexCoord2f( f_width - 0.5, f_height - 0.5 ); glVertex3f( 1.0, - 1.0, - 1.0 );
+        glTexCoord2f( f_width - 0.5, 0.5 ); glVertex3f( 1.0, - 1.0, 1.0 );
         glEnd();
     }
 
@@ -696,12 +692,12 @@ static int InitTextures( vout_thread_t *p_vout )
         /* Set the texture parameters */
         glTexParameterf( VLCGL_TARGET, GL_TEXTURE_PRIORITY, 1.0 );
     
-        glTexParameteri( VLCGL_TARGET, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
-        glTexParameteri( VLCGL_TARGET, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
-    
         glTexParameteri( VLCGL_TARGET, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
         glTexParameteri( VLCGL_TARGET, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
-    
+        
+        glTexParameteri( VLCGL_TARGET, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
+        glTexParameteri( VLCGL_TARGET, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
+
         glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
 
 #ifdef SYS_DARWIN