mirror of
https://code.videolan.org/videolan/vlc
synced 2024-09-04 09:11:33 +02:00
macosx: remove dead code and rename vout.* to VideoView.*
This commit is contained in:
parent
9415464eb3
commit
af5969aedf
14
Makefile.am
14
Makefile.am
@ -475,19 +475,14 @@ VLC-release.app: vlc
|
||||
prefs.m \
|
||||
simple_prefs.h \
|
||||
simple_prefs.m \
|
||||
vout.h \
|
||||
voutgl.m \
|
||||
wizard.h \
|
||||
wizard.m \
|
||||
bookmarks.h \
|
||||
bookmarks.m \
|
||||
coredialogs.h \
|
||||
coredialogs.m \
|
||||
embeddedwindow.h \
|
||||
embeddedwindow.m \
|
||||
fspanel.h \
|
||||
fspanel.m \
|
||||
vout.m; do \
|
||||
fspanel.m; do \
|
||||
cp "$(srcdir)/modules/gui/macosx/$$i" \
|
||||
$(top_builddir)/tmp/modules/gui/macosx; \
|
||||
done
|
||||
@ -608,19 +603,14 @@ VLC.app: vlc $(top_builddir)/src/.libs/libvlccore.dylib $(top_builddir)/lib/.lib
|
||||
prefs.m \
|
||||
simple_prefs.h \
|
||||
simple_prefs.m \
|
||||
vout.h \
|
||||
voutgl.m \
|
||||
wizard.h \
|
||||
wizard.m \
|
||||
bookmarks.h \
|
||||
bookmarks.m \
|
||||
coredialogs.h \
|
||||
coredialogs.m \
|
||||
embeddedwindow.h \
|
||||
embeddedwindow.m \
|
||||
fspanel.h \
|
||||
fspanel.m \
|
||||
vout.m; do \
|
||||
fspanel.m; do \
|
||||
cp "$(srcdir)/modules/gui/macosx/$$i" \
|
||||
$(top_builddir)/tmp/modules/gui/macosx; \
|
||||
done
|
||||
|
@ -239,7 +239,6 @@
|
||||
8E6BC6FA041684EC0059A3A7 /* controls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = controls.h; path = ../../../modules/gui/macosx/controls.h; sourceTree = SOURCE_ROOT; };
|
||||
8E9CA1A306D7DEE800B7186C /* prefs_widgets.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = prefs_widgets.h; path = ../../../modules/gui/macosx/prefs_widgets.h; sourceTree = SOURCE_ROOT; };
|
||||
8E9CA1A406D7DEE800B7186C /* prefs_widgets.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = prefs_widgets.m; path = ../../../modules/gui/macosx/prefs_widgets.m; sourceTree = SOURCE_ROOT; };
|
||||
8E9CA1A506D7DEE800B7186C /* voutgl.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; name = voutgl.m; path = ../../../modules/gui/macosx/voutgl.m; sourceTree = SOURCE_ROOT; };
|
||||
8EBF3FA303F13FFB0059A3A7 /* vlc.scriptSuite */ = {isa = PBXFileReference; lastKnownFileType = text; name = vlc.scriptSuite; path = Resources/vlc.scriptSuite; sourceTree = SOURCE_ROOT; };
|
||||
8EBF3FA503F140960059A3A7 /* vlc.scriptTerminology */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = vlc.scriptTerminology; path = Resources/vlc.scriptTerminology; sourceTree = SOURCE_ROOT; };
|
||||
8ED6C27B03E2EB1C0059A3A7 /* controls.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = controls.m; path = ../../../modules/gui/macosx/controls.m; sourceTree = SOURCE_ROOT; };
|
||||
@ -254,8 +253,6 @@
|
||||
8ED6C28403E2EB1C0059A3A7 /* playlist.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = playlist.m; path = ../../../modules/gui/macosx/playlist.m; sourceTree = SOURCE_ROOT; };
|
||||
8ED6C28503E2EB1C0059A3A7 /* prefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prefs.h; path = ../../../modules/gui/macosx/prefs.h; sourceTree = SOURCE_ROOT; };
|
||||
8ED6C28603E2EB1C0059A3A7 /* prefs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = prefs.m; path = ../../../modules/gui/macosx/prefs.m; sourceTree = SOURCE_ROOT; };
|
||||
8ED6C28703E2EB1C0059A3A7 /* vout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = vout.h; path = ../../../modules/gui/macosx/vout.h; sourceTree = SOURCE_ROOT; };
|
||||
8ED6C28803E2EB1C0059A3A7 /* vout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = vout.m; path = ../../../modules/gui/macosx/vout.m; sourceTree = SOURCE_ROOT; };
|
||||
8EDAC3430440F72D0059A3A7 /* README.MacOSX.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = README.MacOSX.rtf; sourceTree = SOURCE_ROOT; };
|
||||
8EE1AF9F044465080059A3A7 /* about.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = about.h; path = ../../../modules/gui/macosx/about.h; sourceTree = SOURCE_ROOT; };
|
||||
8EE1AFA0044465080059A3A7 /* about.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = about.m; path = ../../../modules/gui/macosx/about.m; sourceTree = SOURCE_ROOT; };
|
||||
@ -475,9 +472,9 @@
|
||||
CCB24D5D0D54BBAE004D780C /* simple_prefs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = simple_prefs.m; path = ../../../modules/gui/macosx/simple_prefs.m; sourceTree = SOURCE_ROOT; };
|
||||
CCB24D5E0D54BBAE004D780C /* simple_prefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = simple_prefs.h; path = ../../../modules/gui/macosx/simple_prefs.h; sourceTree = SOURCE_ROOT; };
|
||||
CCBE999E0F922C51000705F8 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
|
||||
CCC593780AB4A9FB0004FF52 /* embeddedwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = embeddedwindow.h; path = ../../../modules/gui/macosx/embeddedwindow.h; sourceTree = SOURCE_ROOT; };
|
||||
CCC593790AB4A9FB0004FF52 /* embeddedwindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = embeddedwindow.m; path = ../../../modules/gui/macosx/embeddedwindow.m; sourceTree = SOURCE_ROOT; };
|
||||
CCC895830D9A8A82005AE59C /* eyetv.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = eyetv.m; path = ../../../modules/access/eyetv.m; sourceTree = SOURCE_ROOT; };
|
||||
CCCCDCA01413E1C000FE3DE1 /* VideoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VideoView.h; path = ../../../modules/gui/macosx/VideoView.h; sourceTree = "<group>"; };
|
||||
CCCCDCA11413E1C000FE3DE1 /* VideoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = VideoView.m; path = ../../../modules/gui/macosx/VideoView.m; sourceTree = "<group>"; };
|
||||
CCCDDEEF13E870BB00A35661 /* SideBarItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SideBarItem.h; path = ../../../modules/gui/macosx/SideBarItem.h; sourceTree = "<group>"; };
|
||||
CCCDDEF013E870BB00A35661 /* SideBarItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SideBarItem.m; path = ../../../modules/gui/macosx/SideBarItem.m; sourceTree = "<group>"; };
|
||||
CCCE366D13817E4500694F2A /* VideoEffects.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VideoEffects.h; path = ../../../modules/gui/macosx/VideoEffects.h; sourceTree = "<group>"; };
|
||||
@ -615,15 +612,12 @@
|
||||
8E49720106417F6800370C9F /* playlistinfo.m */,
|
||||
8E55FB7F0459B0FD00FB3317 /* output.h */,
|
||||
8E55FB800459B0FD00FB3317 /* output.m */,
|
||||
8ED6C28703E2EB1C0059A3A7 /* vout.h */,
|
||||
8ED6C28803E2EB1C0059A3A7 /* vout.m */,
|
||||
8E9CA1A506D7DEE800B7186C /* voutgl.m */,
|
||||
CCCCDCA01413E1C000FE3DE1 /* VideoView.h */,
|
||||
CCCCDCA11413E1C000FE3DE1 /* VideoView.m */,
|
||||
DC769AB8085DF0DB001A838D /* wizard.h */,
|
||||
DC769AB7085DF0DB001A838D /* wizard.m */,
|
||||
DCE7BD0708A5724D007B10AE /* bookmarks.h */,
|
||||
DCE7BD0608A5724D007B10AE /* bookmarks.m */,
|
||||
CCC593780AB4A9FB0004FF52 /* embeddedwindow.h */,
|
||||
CCC593790AB4A9FB0004FF52 /* embeddedwindow.m */,
|
||||
2AEF857609A5FEC900130822 /* fspanel.h */,
|
||||
2AEF857709A5FEC900130822 /* fspanel.m */,
|
||||
CC6EDD4F0B9CA2140096068A /* eyetv.h */,
|
||||
|
@ -37,7 +37,7 @@
|
||||
#import "coredialogs.h"
|
||||
#import "controls.h"
|
||||
#import "playlistinfo.h"
|
||||
#import "vout.h"
|
||||
#import "VideoView.h"
|
||||
#import "CoreInteraction.h"
|
||||
#import "MainWindow.h"
|
||||
|
||||
|
@ -54,8 +54,6 @@ SOURCES_macosx = \
|
||||
VideoEffects.m \
|
||||
bookmarks.h \
|
||||
bookmarks.m \
|
||||
embeddedwindow.h \
|
||||
embeddedwindow.m \
|
||||
PXSourceList.h \
|
||||
PXSourceList.m \
|
||||
PXSourceListDataSource.h \
|
||||
@ -66,8 +64,7 @@ SOURCES_macosx = \
|
||||
fspanel.h \
|
||||
eyetv.h \
|
||||
eyetv.m \
|
||||
vout.h \
|
||||
vout.m \
|
||||
voutgl.m \
|
||||
VideoView.h \
|
||||
VideoView.m \
|
||||
$(NULL)
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*****************************************************************************
|
||||
* vout.h: MacOS X video output module
|
||||
* VideoView.h: MacOS X video output module
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2002-2011 the VideoLAN team
|
||||
* $Id$
|
@ -1,5 +1,5 @@
|
||||
/*****************************************************************************
|
||||
* vout.m: MacOS X video output module
|
||||
* VideoView.m: MacOS X video output module
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2002-2011 the VideoLAN team
|
||||
* $Id$
|
||||
@ -32,7 +32,7 @@
|
||||
#import <string.h>
|
||||
|
||||
#import "intf.h"
|
||||
#import "vout.h"
|
||||
#import "VideoView.h"
|
||||
#import "CoreInteraction.h"
|
||||
#import "MainMenu.h"
|
||||
#import "MainWindow.h"
|
@ -33,7 +33,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#import "intf.h"
|
||||
#import "vout.h"
|
||||
#import "VideoView.h"
|
||||
#import "open.h"
|
||||
#import "controls.h"
|
||||
#import "playlist.h"
|
||||
|
@ -1,167 +0,0 @@
|
||||
/*****************************************************************************
|
||||
* embeddedwindow.h: MacOS X interface module
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2005-2007 the VideoLAN team
|
||||
* $Id$
|
||||
*
|
||||
* Authors: Benjamin Pracht <bigben at videolan dot org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
/*****************************************************************************
|
||||
* VLCEmbeddedWindow interface
|
||||
*****************************************************************************/
|
||||
|
||||
#import "CompatibilityFixes.h"
|
||||
#import "misc.h"
|
||||
|
||||
@interface VLCEmbeddedWindow : NSWindow <NSWindowDelegate, NSAnimationDelegate>
|
||||
{
|
||||
IBOutlet id o_btn_backward;
|
||||
IBOutlet id o_btn_forward;
|
||||
IBOutlet id o_btn_fullscreen;
|
||||
IBOutlet id o_btn_equalizer;
|
||||
IBOutlet id o_btn_playlist;
|
||||
IBOutlet id o_btn_play;
|
||||
IBOutlet id o_btn_prev;
|
||||
IBOutlet id o_btn_stop;
|
||||
IBOutlet id o_btn_next;
|
||||
IBOutlet id o_btn_volume_down;
|
||||
IBOutlet id o_volumeslider;
|
||||
IBOutlet id o_btn_volume_up;
|
||||
IBOutlet id o_backgroundimg_right;
|
||||
IBOutlet id o_backgroundimg_middle;
|
||||
IBOutlet id o_timeslider;
|
||||
IBOutlet id o_main_pgbar;
|
||||
IBOutlet id o_time;
|
||||
IBOutlet id o_scrollfield;
|
||||
IBOutlet id o_horizontal_split;
|
||||
IBOutlet id o_vertical_split;
|
||||
IBOutlet id o_videosubview;
|
||||
IBOutlet id o_view;
|
||||
IBOutlet id o_background_view;
|
||||
IBOutlet id o_searchfield;
|
||||
IBOutlet id o_status;
|
||||
IBOutlet id o_playlist;
|
||||
IBOutlet id o_playlist_view;
|
||||
IBOutlet id o_playlist_table;
|
||||
IBOutlet id o_vlc_main;
|
||||
IBOutlet id o_video_view;
|
||||
|
||||
NSImage * o_img_play;
|
||||
NSImage * o_img_play_pressed;
|
||||
NSImage * o_img_pause;
|
||||
NSImage * o_img_pause_pressed;
|
||||
|
||||
VLCWindow * o_fullscreen_window;
|
||||
NSViewAnimation * o_fullscreen_anim1;
|
||||
NSViewAnimation * o_fullscreen_anim2;
|
||||
NSViewAnimation * o_makekey_anim;
|
||||
NSView * o_temp_view;
|
||||
/* set to yes if we are fullscreen and all animations are over */
|
||||
BOOL b_fullscreen;
|
||||
NSRecursiveLock * o_animation_lock;
|
||||
|
||||
BOOL b_window_is_invisible;
|
||||
|
||||
NSSize videoRatio;
|
||||
NSInteger originalLevel;
|
||||
}
|
||||
|
||||
- (void)controlTintChanged;
|
||||
|
||||
- (id)videoView;
|
||||
|
||||
- (void)setTime: (NSString *)o_arg_ime position: (float)f_position;
|
||||
- (id)getPgbar;
|
||||
- (void)playStatusUpdated: (int)i_status;
|
||||
- (void)setSeekable: (BOOL)b_seekable;
|
||||
- (void)setStop:(BOOL)b_input;
|
||||
- (void)setPrev:(BOOL)b_input;
|
||||
- (void)setNext:(BOOL)b_input;
|
||||
- (void)setVolumeEnabled:(BOOL)b_input;
|
||||
|
||||
- (void)setScrollString:(NSString *)o_string;
|
||||
|
||||
- (void)setVolumeSlider:(float)f_level;
|
||||
|
||||
- (void)setVideoRatio:(NSSize)ratio;
|
||||
|
||||
- (NSView *)mainView;
|
||||
|
||||
- (IBAction)togglePlaylist:(id)sender;
|
||||
|
||||
- (BOOL)isFullscreen;
|
||||
|
||||
- (void)lockFullscreenAnimation;
|
||||
- (void)unlockFullscreenAnimation;
|
||||
|
||||
- (void)enterFullscreen;
|
||||
- (void)leaveFullscreen;
|
||||
/* Allows leaving fullscreen by simply fading out the display */
|
||||
- (void)leaveFullscreenAndFadeOut: (BOOL)fadeout;
|
||||
|
||||
/* private */
|
||||
- (void)hasEndedFullscreen;
|
||||
- (void)hasBecomeFullscreen;
|
||||
|
||||
- (void)setFrameOnMainThread:(NSData*)packedargs;
|
||||
@end
|
||||
|
||||
/*****************************************************************************
|
||||
* embeddedbackground
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
@interface embeddedbackground : NSView
|
||||
{
|
||||
IBOutlet id o_window;
|
||||
IBOutlet id o_timeslider;
|
||||
IBOutlet id o_main_pgbar;
|
||||
IBOutlet id o_time;
|
||||
IBOutlet id o_scrollfield;
|
||||
IBOutlet id o_searchfield;
|
||||
IBOutlet id o_btn_backward;
|
||||
IBOutlet id o_btn_forward;
|
||||
IBOutlet id o_btn_fullscreen;
|
||||
IBOutlet id o_btn_equalizer;
|
||||
IBOutlet id o_btn_playlist;
|
||||
IBOutlet id o_btn_play;
|
||||
IBOutlet id o_btn_prev;
|
||||
IBOutlet id o_btn_stop;
|
||||
IBOutlet id o_btn_next;
|
||||
IBOutlet id o_btn_volume_down;
|
||||
IBOutlet id o_volumeslider;
|
||||
IBOutlet id o_btn_volume_up;
|
||||
|
||||
NSPoint dragStart;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
/*****************************************************************************
|
||||
* statusbar
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
@interface statusbar : NSView
|
||||
{
|
||||
IBOutlet id o_text;
|
||||
|
||||
BOOL mainwindow;
|
||||
}
|
||||
|
||||
@end
|
File diff suppressed because it is too large
Load Diff
@ -42,7 +42,7 @@
|
||||
#import "CompatibilityFixes.h"
|
||||
#import "intf.h"
|
||||
#import "MainMenu.h"
|
||||
#import "vout.h"
|
||||
#import "VideoView.h"
|
||||
#import "prefs.h"
|
||||
#import "playlist.h"
|
||||
#import "playlistinfo.h"
|
||||
@ -51,7 +51,6 @@
|
||||
#import "wizard.h"
|
||||
#import "bookmarks.h"
|
||||
#import "coredialogs.h"
|
||||
#import "embeddedwindow.h"
|
||||
#import "AppleRemote.h"
|
||||
#import "eyetv.h"
|
||||
#import "simple_prefs.h"
|
||||
|
@ -1,419 +0,0 @@
|
||||
/*****************************************************************************
|
||||
* voutgl.m: MacOS X OpenGL provider
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2001-2004, 2007-2009, 2011 the VideoLAN team
|
||||
* $Id$
|
||||
*
|
||||
* Authors: Colin Delacroix <colin@zoy.org>
|
||||
* Florian G. Pflug <fgp@phlo.org>
|
||||
* Jon Lech Johansen <jon-vl@nanocrew.net>
|
||||
* Derk-Jan Hartman <hartman at videolan dot org>
|
||||
* Eric Petit <titer@m0k.org>
|
||||
* Benjamin Pracht <bigben at videolan dot org>
|
||||
* Damien Fouilleul <damienf at videolan dot org>
|
||||
* Felix Paul Kuehne <fkuehne at videolan dot org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
/*****************************************************************************
|
||||
* Preamble
|
||||
*****************************************************************************/
|
||||
#include <stdlib.h> /* free() */
|
||||
#include <string.h>
|
||||
|
||||
#include <vlc_common.h>
|
||||
#include <vlc_keys.h>
|
||||
|
||||
#include "intf.h"
|
||||
#include "vout.h"
|
||||
|
||||
#include <OpenGL/OpenGL.h>
|
||||
#include <OpenGL/gl.h>
|
||||
|
||||
#if 0
|
||||
|
||||
/*****************************************************************************
|
||||
* VLCGLView interface
|
||||
*****************************************************************************/
|
||||
@interface VLCGLView : NSOpenGLView <VLCVoutViewResetting>
|
||||
{
|
||||
vout_thread_t * p_vout;
|
||||
}
|
||||
|
||||
+ (void)resetVout: (NSValue *) voutValue;
|
||||
- (id) initWithVout: (vout_thread_t *) p_vout;
|
||||
@end
|
||||
|
||||
struct vout_sys_t
|
||||
{
|
||||
VLCGLView * o_glview;
|
||||
VLCVoutView * o_vout_view;
|
||||
bool b_saved_frame;
|
||||
NSRect s_frame;
|
||||
bool b_got_frame;
|
||||
|
||||
bool b_embedded;
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
* Local prototypes
|
||||
*****************************************************************************/
|
||||
|
||||
static int Init ( vout_thread_t * p_vout );
|
||||
static void End ( vout_thread_t * p_vout );
|
||||
static int Manage ( vout_thread_t * p_vout );
|
||||
static int Control( vout_thread_t *, int, va_list );
|
||||
static void Swap ( vout_thread_t * p_vout );
|
||||
static int Lock ( vout_thread_t * p_vout );
|
||||
static void Unlock ( vout_thread_t * p_vout );
|
||||
|
||||
int OpenVideoGL ( vlc_object_t * p_this )
|
||||
{
|
||||
vout_thread_t * p_vout = (vout_thread_t *) p_this;
|
||||
|
||||
if( !CGDisplayUsesOpenGLAcceleration( kCGDirectMainDisplay ) )
|
||||
{
|
||||
msg_Warn( p_vout, "no OpenGL hardware acceleration found. "
|
||||
"Video display might be slow" );
|
||||
}
|
||||
msg_Dbg( p_vout, "display is Quartz Extreme accelerated" );
|
||||
|
||||
p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
|
||||
if( p_vout->p_sys == NULL )
|
||||
return VLC_ENOMEM;
|
||||
|
||||
memset( p_vout->p_sys, 0, sizeof( vout_sys_t ) );
|
||||
|
||||
NSAutoreleasePool *o_pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
p_vout->p_sys->b_embedded = false;
|
||||
|
||||
[VLCGLView performSelectorOnMainThread:@selector(initVout:) withObject:[NSValue valueWithPointer:p_vout] waitUntilDone:YES];
|
||||
|
||||
[o_pool release];
|
||||
|
||||
/* Check to see if initVout: was successfull */
|
||||
if( !p_vout->p_sys->o_vout_view )
|
||||
{
|
||||
free( p_vout->p_sys );
|
||||
return VLC_EGENERIC;
|
||||
}
|
||||
|
||||
p_vout->pf_init = Init;
|
||||
p_vout->pf_end = End;
|
||||
p_vout->pf_manage = Manage;
|
||||
p_vout->pf_control= Control;
|
||||
p_vout->pf_swap = Swap;
|
||||
p_vout->pf_lock = Lock;
|
||||
p_vout->pf_unlock = Unlock;
|
||||
p_vout->p_sys->b_got_frame = false;
|
||||
|
||||
return VLC_SUCCESS;
|
||||
}
|
||||
|
||||
void CloseVideoGL ( vlc_object_t * p_this )
|
||||
{
|
||||
vout_thread_t * p_vout = (vout_thread_t *) p_this;
|
||||
|
||||
if(VLCIntf && vlc_object_alive (VLCIntf))
|
||||
{
|
||||
NSAutoreleasePool *o_pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
/* Close the window */
|
||||
[p_vout->p_sys->o_vout_view performSelectorOnMainThread:@selector(closeVout) withObject:NULL waitUntilDone:YES];
|
||||
|
||||
[o_pool release];
|
||||
}
|
||||
/* Clean up */
|
||||
free( p_vout->p_sys );
|
||||
}
|
||||
|
||||
static int Init( vout_thread_t * p_vout )
|
||||
{
|
||||
[[p_vout->p_sys->o_glview openGLContext] makeCurrentContext];
|
||||
return VLC_SUCCESS;
|
||||
}
|
||||
|
||||
static void End( vout_thread_t * p_vout )
|
||||
{
|
||||
[[p_vout->p_sys->o_glview openGLContext] makeCurrentContext];
|
||||
}
|
||||
|
||||
static int Manage( vout_thread_t * p_vout )
|
||||
{
|
||||
if( p_vout->i_changes & VOUT_ASPECT_CHANGE )
|
||||
{
|
||||
[p_vout->p_sys->o_glview reshape];
|
||||
p_vout->i_changes &= ~VOUT_ASPECT_CHANGE;
|
||||
}
|
||||
if( p_vout->i_changes & VOUT_CROP_CHANGE )
|
||||
{
|
||||
[p_vout->p_sys->o_glview reshape];
|
||||
p_vout->i_changes &= ~VOUT_CROP_CHANGE;
|
||||
}
|
||||
|
||||
if( p_vout->i_changes & VOUT_FULLSCREEN_CHANGE )
|
||||
{
|
||||
NSAutoreleasePool *o_pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
p_vout->b_fullscreen = !p_vout->b_fullscreen;
|
||||
|
||||
if( p_vout->b_fullscreen )
|
||||
[p_vout->p_sys->o_vout_view enterFullscreen];
|
||||
else
|
||||
[p_vout->p_sys->o_vout_view leaveFullscreen];
|
||||
|
||||
[o_pool release];
|
||||
|
||||
p_vout->i_changes &= ~VOUT_FULLSCREEN_CHANGE;
|
||||
}
|
||||
|
||||
if( p_vout->p_sys->o_vout_view )
|
||||
[p_vout->p_sys->o_vout_view manage];
|
||||
return VLC_SUCCESS;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* Control: control facility for the vout
|
||||
*****************************************************************************/
|
||||
static int Control( vout_thread_t *p_vout, int i_query, va_list args )
|
||||
{
|
||||
bool b_arg;
|
||||
|
||||
switch( i_query )
|
||||
{
|
||||
case VOUT_SET_STAY_ON_TOP:
|
||||
b_arg = (bool) va_arg( args, int );
|
||||
[p_vout->p_sys->o_vout_view setOnTop: b_arg];
|
||||
return VLC_SUCCESS;
|
||||
|
||||
default:
|
||||
return VLC_EGENERIC;
|
||||
}
|
||||
}
|
||||
|
||||
static void Swap( vout_thread_t * p_vout )
|
||||
{
|
||||
p_vout->p_sys->b_got_frame = true;
|
||||
[[p_vout->p_sys->o_glview openGLContext] flushBuffer];
|
||||
}
|
||||
|
||||
static int Lock( vout_thread_t * p_vout )
|
||||
{
|
||||
if( kCGLNoError == CGLLockContext([[p_vout->p_sys->o_glview openGLContext] CGLContextObj]) )
|
||||
{
|
||||
[[p_vout->p_sys->o_glview openGLContext] makeCurrentContext];
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void Unlock( vout_thread_t * p_vout )
|
||||
{
|
||||
CGLUnlockContext([[p_vout->p_sys->o_glview openGLContext] CGLContextObj]);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* VLCGLView implementation
|
||||
*****************************************************************************/
|
||||
@implementation VLCGLView
|
||||
+ (void)initVout:(NSValue *)arg
|
||||
{
|
||||
vout_thread_t * p_vout = [arg pointerValue];
|
||||
|
||||
/* Create the GL view */
|
||||
p_vout->p_sys->o_glview = [[VLCGLView alloc] initWithVout: p_vout];
|
||||
[p_vout->p_sys->o_glview autorelease];
|
||||
|
||||
/* Spawn the window */
|
||||
id old_vout = p_vout->p_sys->o_vout_view;
|
||||
p_vout->p_sys->o_vout_view = [[VLCVoutView voutView: p_vout
|
||||
subView: p_vout->p_sys->o_glview frame: nil] retain];
|
||||
[old_vout release];
|
||||
}
|
||||
|
||||
/* This function will reset the o_vout_view. It's useful to go fullscreen. */
|
||||
+ (void)resetVout:(NSValue *) voutValue
|
||||
{
|
||||
vout_thread_t * p_vout = [voutValue pointerValue];
|
||||
if( p_vout->b_fullscreen )
|
||||
{
|
||||
/* Save window size and position */
|
||||
p_vout->p_sys->s_frame.size =
|
||||
[p_vout->p_sys->o_vout_view frame].size;
|
||||
p_vout->p_sys->s_frame.origin =
|
||||
[[p_vout->p_sys->o_vout_view voutWindow]frame].origin;
|
||||
p_vout->p_sys->b_saved_frame = true;
|
||||
}
|
||||
|
||||
[p_vout->p_sys->o_vout_view closeVout];
|
||||
|
||||
#define o_glview p_vout->p_sys->o_glview
|
||||
o_glview = [[VLCGLView alloc] initWithVout: p_vout];
|
||||
[o_glview autorelease];
|
||||
|
||||
if( p_vout->p_sys->b_saved_frame )
|
||||
{
|
||||
id old_vout = p_vout->p_sys->o_vout_view;
|
||||
p_vout->p_sys->o_vout_view = [[VLCVoutView voutView: p_vout
|
||||
subView: o_glview
|
||||
frame: &p_vout->p_sys->s_frame] retain];
|
||||
[old_vout release];
|
||||
}
|
||||
else
|
||||
{
|
||||
id old_vout = p_vout->p_sys->o_vout_view;
|
||||
p_vout->p_sys->o_vout_view = [[VLCVoutView voutView: p_vout
|
||||
subView: o_glview frame: nil] retain];
|
||||
[old_vout release];
|
||||
}
|
||||
#undef o_glview
|
||||
}
|
||||
|
||||
- (id) initWithVout: (vout_thread_t *) vout
|
||||
{
|
||||
/* Must be called from main thread:
|
||||
* "The NSView class is generally thread-safe, with a few exceptions. You
|
||||
* should create, destroy, resize, move, and perform other operations on NSView
|
||||
* objects only from the main thread of an application. Drawing from secondary
|
||||
* threads is thread-safe as long as you bracket drawing calls with calls to
|
||||
* lockFocusIfCanDraw and unlockFocus." Cocoa Thread Safety */
|
||||
|
||||
p_vout = vout;
|
||||
|
||||
NSOpenGLPixelFormatAttribute attribs[] =
|
||||
{
|
||||
NSOpenGLPFADoubleBuffer,
|
||||
NSOpenGLPFAAccelerated,
|
||||
NSOpenGLPFANoRecovery,
|
||||
NSOpenGLPFAColorSize, 24,
|
||||
NSOpenGLPFAAlphaSize, 8,
|
||||
NSOpenGLPFADepthSize, 24,
|
||||
NSOpenGLPFAWindow,
|
||||
0
|
||||
};
|
||||
|
||||
NSOpenGLPixelFormat * fmt = [[NSOpenGLPixelFormat alloc]
|
||||
initWithAttributes: attribs];
|
||||
|
||||
if( !fmt )
|
||||
{
|
||||
msg_Warn( p_vout, "could not create OpenGL video output" );
|
||||
return nil;
|
||||
}
|
||||
|
||||
self = [super initWithFrame: NSMakeRect(0,0,10,10) pixelFormat: fmt];
|
||||
[fmt release];
|
||||
|
||||
[[self openGLContext] makeCurrentContext];
|
||||
[[self openGLContext] update];
|
||||
|
||||
/* Swap buffers only during the vertical retrace of the monitor.
|
||||
http://developer.apple.com/documentation/GraphicsImaging/
|
||||
Conceptual/OpenGL/chap5/chapter_5_section_44.html */
|
||||
GLint params[] = { 1 };
|
||||
CGLSetParameter( CGLGetCurrentContext(), kCGLCPSwapInterval, params );
|
||||
return self;
|
||||
}
|
||||
|
||||
- (BOOL)mouseDownCanMoveWindow
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void) reshape
|
||||
{
|
||||
int x, y;
|
||||
|
||||
Lock( p_vout );
|
||||
NSRect bounds = [self bounds];
|
||||
|
||||
if( var_GetBool( p_vout, "macosx-stretch" ) )
|
||||
{
|
||||
x = bounds.size.width;
|
||||
y = bounds.size.height;
|
||||
}
|
||||
else if( bounds.size.height * p_vout->fmt_in.i_visible_width *
|
||||
p_vout->fmt_in.i_sar_num <
|
||||
bounds.size.width * p_vout->fmt_in.i_visible_height *
|
||||
p_vout->fmt_in.i_sar_den )
|
||||
{
|
||||
x = ( bounds.size.height * p_vout->fmt_in.i_visible_width *
|
||||
p_vout->fmt_in.i_sar_num ) /
|
||||
( p_vout->fmt_in.i_visible_height * p_vout->fmt_in.i_sar_den);
|
||||
|
||||
y = bounds.size.height;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = bounds.size.width;
|
||||
y = ( bounds.size.width * p_vout->fmt_in.i_visible_height *
|
||||
p_vout->fmt_in.i_sar_den) /
|
||||
( p_vout->fmt_in.i_visible_width * p_vout->fmt_in.i_sar_num );
|
||||
}
|
||||
|
||||
glViewport( ( bounds.size.width - x ) / 2,
|
||||
( bounds.size.height - y ) / 2, x, y );
|
||||
|
||||
[super reshape];
|
||||
|
||||
if( p_vout->p_sys->b_got_frame )
|
||||
{
|
||||
/* Ask the opengl module to redraw */
|
||||
vout_thread_t * p_parent;
|
||||
p_parent = (vout_thread_t *) p_vout->p_parent;
|
||||
Unlock( p_vout );
|
||||
if( p_parent && p_parent->pf_display )
|
||||
{
|
||||
p_parent->pf_display( p_parent, NULL );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
glClear( GL_COLOR_BUFFER_BIT );
|
||||
Unlock( p_vout );
|
||||
}
|
||||
}
|
||||
|
||||
- (void) update
|
||||
{
|
||||
Lock( p_vout );
|
||||
[super update];
|
||||
Unlock( p_vout );
|
||||
}
|
||||
|
||||
- (void) drawRect: (NSRect) rect
|
||||
{
|
||||
Lock( p_vout );
|
||||
[[p_vout->p_sys->o_glview openGLContext] flushBuffer];
|
||||
[super drawRect:rect];
|
||||
Unlock( p_vout );
|
||||
}
|
||||
|
||||
- (void) renewGState
|
||||
{
|
||||
NSWindow *window = [self window];
|
||||
|
||||
if ([window respondsToSelector:@selector(disableScreenUpdatesUntilFlush)])
|
||||
{
|
||||
[window disableScreenUpdatesUntilFlush];
|
||||
}
|
||||
|
||||
[super renewGState];
|
||||
}
|
||||
|
||||
@end
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user