/*****************************************************************************
* vout.m: MacOS X video output module
*****************************************************************************
- * Copyright (C) 2001-2008 the VideoLAN team
+ * Copyright (C) 2001-2009 the VideoLAN team
* $Id$
*
* Authors: Colin Delacroix <colin@zoy.org>
/*****************************************************************************
* Preamble
*****************************************************************************/
-#include <errno.h> /* ENOMEM */
#include <stdlib.h> /* free() */
#include <string.h>
-/* BeginFullScreen, EndFullScreen */
-#include <QuickTime/QuickTime.h>
-
/* prevent system sleep */
#import <CoreServices/CoreServices.h>
+/* FIXME: HACK!! */
+#ifdef __x86_64__
+#import <CoreServices/../Frameworks/OSServices.framework/Headers/Power.h>
+#endif
+
+/* SystemUIMode */
+#import <Carbon/Carbon.h>
-#include <vlc_keys.h>
#include "intf.h"
#include "fspanel.h"
#import "controls.h"
#import "embeddedwindow.h"
+#include <vlc_common.h>
+#include <vlc_keys.h>
+
/*****************************************************************************
* DeviceCallback: Callback triggered when the video-device variable is changed
*****************************************************************************/
return self;
}
-- (id)getEmbeddedVout
+- (id)embeddedVout
{
unsigned int i;
{
NSLog( @"We were not given a VLCVoutWindow" );
}*/
- return ([self getViewForWindow: o_window] == nil ? NO : YES );
+ return ([self viewForWindow: o_window] == nil ? NO : YES );
}
-- (id)getViewForWindow: (id)o_window
+- (id)viewForWindow: (id)o_window
{
if( o_embedded_array != nil )
{
{
while( (o_current_embedded = [o_enumerator nextObject]) )
{
- if( [o_current_embedded getWindow] == o_window )
+ if( [o_current_embedded voutWindow] == o_window )
{
return o_current_embedded;
}
return NO;
}
- p_real_vout = [VLCVoutView getRealVout: p_vout];
+ p_real_vout = [VLCVoutView realVout: p_vout];
/* Get the pref value when this is the first time, otherwise retrieve the device from the top level video-device var */
if( var_Type( p_real_vout->p_libvlc, "video-device" ) == 0 )
- (void)closeVout
{
- [[[[VLCMain sharedInstance] getControls] getFSPanel] fadeOut];
+ [[[[VLCMain sharedInstance] controls] fspanel] fadeOut];
/* Make sure we don't see a white flash */
- [[self window] disableScreenUpdatesUntilFlush];
+ [[self voutWindow] disableScreenUpdatesUntilFlush];
[o_view removeFromSuperview];
o_view = nil;
p_vout = NULL;
if( !p_vout ) return;
- p_input = vlc_object_find( p_vout, VLC_OBJECT_INPUT, FIND_PARENT );
+ p_input = getInput();
if( !p_input ) return;
vlc_object_release( p_input );
}
-
- (void)setOnTop:(BOOL)b_on_top
{
if( b_on_top )
{
vlc_value_t val;
if( !p_real_vout ) return;
- var_Get( p_real_vout, "fullscreen", &val );
- val.b_bool = !val.b_bool;
- var_Set( p_real_vout, "fullscreen", val );
+ var_ToggleBool( p_real_vout, "fullscreen" );
}
- (BOOL)isFullscreen
if( !VLCIntf || !VLCIntf->p_sys )
return;
- UInt8 UsrActivity;
if( VLCIntf->p_sys->i_play_status == PLAYING_S )
UpdateSystemActivity( UsrActivity );
}
-- (id)getWindow
+- (id)voutWindow
{
return o_window;
}
- (void)scrollWheel:(NSEvent *)theEvent
{
- VLCControls * o_controls = (VLCControls *)[[NSApp delegate] getControls];
+ VLCControls * o_controls = (VLCControls *)[[NSApp delegate] controls];
[o_controls scrollWheel: theEvent];
}
( [o_event modifierFlags] & NSControlKeyMask ) ) )
{
msg_Dbg( p_vout, "received NSRightMouseDown (generic method) or Ctrl clic" );
- [NSMenu popUpContextMenu: [[VLCMain sharedInstance] getVoutMenu] withEvent: o_event forView: [[[VLCMain sharedInstance] getControls] voutView]];
+ [NSMenu popUpContextMenu: [[VLCMain sharedInstance] voutMenu] withEvent: o_event forView: [[[VLCMain sharedInstance] controls] voutView]];
}
}
if( p_vout && [o_event type] == NSRightMouseDown )
{
msg_Dbg( p_vout, "received NSRightMouseDown (specific method)" );
- [NSMenu popUpContextMenu: [[VLCMain sharedInstance] getVoutMenu] withEvent: o_event forView: [[[VLCMain sharedInstance] getControls] voutView]];
+ [NSMenu popUpContextMenu: [[VLCMain sharedInstance] voutMenu] withEvent: o_event forView: [[[VLCMain sharedInstance] controls] voutView]];
}
[super mouseDown: o_event];
/* FIXME: this isn't the appropriate place, but we can't receive
* NSRightMouseDown some how */
msg_Dbg( p_vout, "received NSRightMouseUp" );
- [NSMenu popUpContextMenu: [[VLCMain sharedInstance] getVoutMenu] withEvent: o_event forView: [[[VLCMain sharedInstance] getControls] voutView]];
+ [NSMenu popUpContextMenu: [[VLCMain sharedInstance] voutMenu] withEvent: o_event forView: [[[VLCMain sharedInstance] controls] voutView]];
}
[super mouseUp: o_event];
p_vout->render.i_height / i_height;
}
var_Set( p_vout, "mouse-y", val );
-
- val.b_bool = true;
- var_Set( p_vout, "mouse-moved", val );
+ var_TriggerCallback( p_vout, "mouse-moved" );
}
if( [self isFullscreen] )
- [[[[VLCMain sharedInstance] getControls] getFSPanel] fadeIn];
+ [[[[VLCMain sharedInstance] controls] fspanel] fadeIn];
}
[super mouseMoved: o_event];
/* Class methods used by the different vout modules */
-+ (vout_thread_t *)getRealVout: (vout_thread_t *)p_vout
++ (vout_thread_t *)realVout: (vout_thread_t *)p_vout
{
/* p_real_vout: the vout we have to use to check for video-on-top
and a few other things. If we are the QuickTime output, it's us.
+ (id)voutView: (vout_thread_t *)p_vout subView: (NSView *)view
frame: (NSRect *)s_frame
{
- vlc_value_t value_drawable;
+ int i_drawable_gl;
int i_timeout;
id o_return = nil;
- var_Get( p_vout->p_libvlc, "drawable", &value_drawable );
+ i_drawable_gl = var_GetInteger( p_vout->p_libvlc, "drawable-gl" );
var_Create( p_vout, "macosx-vdev", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
var_Create( p_vout, "macosx-stretch", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
/* We only wait for NSApp to initialise if we're not embedded (as in the
* case of the Mozilla plugin). We can tell whether we're embedded or not
- * by examining the "drawable" value: if it's zero, we're running in the
+ * by examining the "drawable-gl" value: if it's zero, we're running in the
* main Mac intf; if it's non-zero, we're embedded. */
- if( value_drawable.i_int == 0 )
+ if( i_drawable_gl == 0 )
{
/* Wait for a MacOS X interface to appear. Timeout is 2 seconds. */
for( i_timeout = 20 ; i_timeout-- ; )
!(var_GetBool( p_vout, "macosx-background" )) &&
var_GetBool( p_vout, "embedded-video") )
{
- o_return = [[[VLCMain sharedInstance] getEmbeddedList]
- getEmbeddedVout];
+ o_return = [[[VLCMain sharedInstance] embeddedList] embeddedVout];
}
}
}
- (void)enterFullscreen
{
/* Save the settings for next playing item */
- playlist_t * p_playlist = pl_Hold( p_real_vout );
+ playlist_t * p_playlist = pl_Get( p_real_vout );
var_SetBool( p_playlist, "fullscreen", true );
- pl_Release( p_real_vout );
}
- (void)leaveFullscreen
{
/* Save the settings for next playing item */
- playlist_t * p_playlist = pl_Hold( p_real_vout );
+ playlist_t * p_playlist = pl_Get( p_real_vout );
var_SetBool( p_playlist, "fullscreen", false );
- pl_Release( p_real_vout );
}
@end
if(self = [super initWithFrame: frameRect])
{
b_used = NO;
- [[[VLCMain sharedInstance] getEmbeddedList] addEmbeddedVout: self];
+ [[[VLCMain sharedInstance] embeddedList] addEmbeddedVout: self];
o_embeddedwindow = nil; /* Filled later on in -awakeFromNib */
}
return self;
if ([o_window isVisible] && (![o_window isFullscreen]))
[o_window makeKeyAndOrderFront: self];
- [self scaleWindowWithFactor: 1.0 animate: [o_window isVisible] && (![o_window isFullscreen])];
+ if ( [self window] != o_embeddedwindow )
+ [self scaleWindowWithFactor: 1.0 animate: [o_window isVisible] && (![o_window isFullscreen])];
[o_embeddedwindow setVideoRatio:[self voutSizeForFactor:1.0]];
/* FIXME: fix core */
[o_embeddedwindow performSelector:@selector(orderOut:) withObject:nil afterDelay:3.];
- [[[VLCMain sharedInstance] getEmbeddedList] releaseEmbeddedVout: self];
+ [[[VLCMain sharedInstance] embeddedList] releaseEmbeddedVout: self];
}
- (void)enterFullscreen
[self setLevel:NSNormalWindowLevel];
/* tell the fspanel to move itself to front next time it's triggered */
- [[[[VLCMain sharedInstance] getControls] getFSPanel] setVoutWasUpdated: i_device];
- [[[[VLCMain sharedInstance] getControls] getFSPanel] setActive: nil];
+ [[[[VLCMain sharedInstance] controls] fspanel] setVoutWasUpdated: i_device];
+ [[[[VLCMain sharedInstance] controls] fspanel] setActive: nil];
fullscreen = YES;
}
[NSScreen unblackoutScreens];
- [[[[VLCMain sharedInstance] getControls] getFSPanel] setNonActive: nil];
+ [[[[VLCMain sharedInstance] controls] fspanel] setNonActive: nil];
SetSystemUIMode( kUIModeNormal, kUIOptionAutoShowMenuBar);
+
[self setFrame:initialFrame display:YES animate:YES];
[self setMovableByWindowBackground: YES];
if( var_GetBool( p_vout, "video-on-top" ) )