From 849d30789edad9cdd838053b63752334a49ee871 Mon Sep 17 00:00:00 2001 From: Derk-Jan Hartman Date: Fri, 24 Jun 2005 20:14:28 +0000 Subject: [PATCH] * backport of [11511] [11512] and [11513] --- extras/contrib/src/packages.mak | 2 +- modules/gui/macosx/playlist.m | 89 +++++++++++---------------------- modules/video_output/opengl.c | 72 +++++++++++++------------- 3 files changed, 64 insertions(+), 99 deletions(-) diff --git a/extras/contrib/src/packages.mak b/extras/contrib/src/packages.mak index b65679b1e3..6922a72666 100644 --- a/extras/contrib/src/packages.mak +++ b/extras/contrib/src/packages.mak @@ -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 diff --git a/modules/gui/macosx/playlist.m b/modules/gui/macosx/playlist.m index 40a5167861..700eeda8d4 100644 --- a/modules/gui/macosx/playlist.m +++ b/modules/gui/macosx/playlist.m @@ -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]]; } diff --git a/modules/video_output/opengl.c b/modules/video_output/opengl.c index 336d4c66bd..fd185d684b 100644 --- a/modules/video_output/opengl.c +++ b/modules/video_output/opengl.c @@ -69,10 +69,6 @@ #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 -- 2.39.2