From 48515f2a60b833b4b9e5869190c533f7f848b821 Mon Sep 17 00:00:00 2001 From: Benjamin Pracht Date: Mon, 15 Dec 2003 19:25:56 +0000 Subject: [PATCH] Fix for the fullscreen button state (it is only enabled if a vout is present) --- modules/gui/macosx/controls.m | 3 +-- modules/gui/macosx/intf.h | 5 +++-- modules/gui/macosx/intf.m | 42 ++++++++++++++++++++++++++++++++--- modules/gui/macosx/vout.m | 24 ++++++++++++++++---- 4 files changed, 63 insertions(+), 11 deletions(-) diff --git a/modules/gui/macosx/controls.m b/modules/gui/macosx/controls.m index 4bcbd8d05f..06018f6824 100644 --- a/modules/gui/macosx/controls.m +++ b/modules/gui/macosx/controls.m @@ -2,7 +2,7 @@ * controls.m: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN - * $Id: controls.m,v 1.58 2003/12/11 19:34:47 hartman Exp $ + * $Id: controls.m,v 1.59 2003/12/15 19:25:56 bigben Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -357,7 +357,6 @@ } else { - [o_btn_fullscreen setState: ![o_window isFullscreen]]; [o_window toggleFullscreen]; } break; diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h index 0b33919536..37acdeec06 100644 --- a/modules/gui/macosx/intf.h +++ b/modules/gui/macosx/intf.h @@ -2,7 +2,7 @@ * intf.h: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN - * $Id: intf.h,v 1.51 2003/12/11 19:34:47 hartman Exp $ + * $Id: intf.h,v 1.52 2003/12/15 19:25:56 bigben Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -75,7 +75,8 @@ struct intf_sys_t vlc_bool_t b_play_status; vlc_bool_t b_playlist_update; vlc_bool_t b_current_title_update; - + vlc_bool_t b_fullscreen_update; + /* menus handlers */ vlc_bool_t b_input_update; vlc_bool_t b_aout_update; diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index c0ec0f7df7..37c248209d 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -2,7 +2,7 @@ * intf.m: MacOS X interface plugin ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN - * $Id: intf.m,v 1.106 2003/12/15 15:38:26 hartman Exp $ + * $Id: intf.m,v 1.107 2003/12/15 19:25:56 bigben Exp $ * * Authors: Jon Lech Johansen * Christophe Massiot @@ -73,6 +73,7 @@ int E_(OpenIntf) ( vlc_object_t *p_this ) [[VLCApplication sharedApplication] autorelease]; [NSApp setIntf: p_intf]; + [NSBundle loadNibNamed: @"MainMenu" owner: NSApp]; return( 0 ); @@ -615,7 +616,7 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) while( !p_intf->b_die ) { playlist_t * p_playlist; - + vlc_value_t val; vlc_mutex_lock( &p_intf->change_lock ); p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, @@ -657,6 +658,15 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) #undef p_input vlc_object_release( p_playlist ); + + var_Create(p_intf,"intf-change",VLC_VAR_BOOL ); + if( var_Get( p_intf, "intf-change", &val ) + >= 0 && val.b_bool ) + { + p_intf->p_sys->b_fullscreen_update = TRUE; + } + val.b_bool = VLC_FALSE; + var_Set( p_intf,"intf-change",val); } vlc_mutex_unlock( &p_intf->change_lock ); @@ -758,10 +768,36 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) [o_timefield setStringValue: @"0:00:00"]; [self manageVolumeSlider]; - p_intf->p_sys->b_intf_update = VLC_FALSE; } + if (p_intf->p_sys->b_fullscreen_update ) + { + vout_thread_t * p_vout; + vlc_value_t val; + p_vout=vlc_object_find(p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE); + if (p_vout !=NULL) + { + if( var_Get( p_intf, "fullscreen", &val ) + >= 0 && val.b_bool ) + { + [o_btn_fullscreen setState:VLC_TRUE]; + } + else + { + [o_btn_fullscreen setState:VLC_FALSE]; + } + [o_btn_fullscreen setEnabled: VLC_TRUE]; + vlc_object_release( p_vout ); + } + else + { + [o_btn_fullscreen setState: VLC_FALSE]; + [o_btn_fullscreen setEnabled: VLC_FALSE]; + } + p_intf->p_sys->b_fullscreen_update = VLC_FALSE; + } + if( p_intf->p_sys->b_playing && p_input != NULL ) { vlc_value_t time; diff --git a/modules/gui/macosx/vout.m b/modules/gui/macosx/vout.m index a6423f3f3a..d311ef9687 100644 --- a/modules/gui/macosx/vout.m +++ b/modules/gui/macosx/vout.m @@ -2,7 +2,7 @@ * vout.m: MacOS X video output plugin ***************************************************************************** * Copyright (C) 2001-2003 VideoLAN - * $Id: vout.m,v 1.66 2003/12/08 19:50:22 gbazin Exp $ + * $Id: vout.m,v 1.67 2003/12/15 19:25:56 bigben Exp $ * * Authors: Colin Delacroix * Florian G. Pflug @@ -417,6 +417,8 @@ static void vout_Display( vout_thread_t *p_vout, picture_t *p_pic ) static int CoSendRequest( vout_thread_t *p_vout, SEL sel ) { int i_ret = 0; + vlc_value_t val; + intf_thread_t * p_intf; VLCVout * o_vlv = [[VLCVout alloc] init]; @@ -427,6 +429,21 @@ static int CoSendRequest( vout_thread_t *p_vout, SEL sel ) [o_vlv release]; + /*This makes this function dependant of the presence of a macosx + interface. We do not check if this interface exists, since it has + already been done before.*/ + + p_intf = [NSApp getIntf]; + + val.b_bool = p_vout->b_fullscreen; + var_Create(p_intf,"fullscreen",VLC_VAR_BOOL | VLC_VAR_DOINHERIT); + var_Set(p_intf,"fullscreen",val); + + val.b_bool = VLC_TRUE; + var_Create(p_intf,"intf-change",VLC_VAR_BOOL); + var_Set(p_intf, "intf-change",val); + + return( i_ret ); } @@ -442,7 +459,7 @@ static int CoCreateWindow( vout_thread_t *p_vout ) msg_Err( p_vout, "CoSendRequest (createWindow) failed" ); return( 1 ); } - + return( 0 ); } @@ -482,8 +499,6 @@ static int CoToggleFullscreen( vout_thread_t *p_vout ) p_vout->b_fullscreen = !p_vout->b_fullscreen; - config_PutInt( p_vout, "fullscreen", p_vout->b_fullscreen ); - if( CoCreateWindow( p_vout ) ) { msg_Err( p_vout, "unable to create window" ); @@ -1273,6 +1288,7 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic ) [p_vout->p_sys->o_window updateTitle]; [p_vout->p_sys->o_window makeKeyAndOrderFront: nil]; + } - (void)destroyWindow:(NSValue *)o_value -- 2.39.2