Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
7f84f44d
Commit
7f84f44d
authored
Feb 15, 2013
by
David Fuhrmann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
macosx: move fullscreen logic to VLCVoutController and remove now unneeded helper methods
parent
cf04d7a8
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
87 additions
and
98 deletions
+87
-98
modules/gui/macosx/CoreInteraction.m
modules/gui/macosx/CoreInteraction.m
+1
-1
modules/gui/macosx/VLCVoutWindowController.h
modules/gui/macosx/VLCVoutWindowController.h
+3
-6
modules/gui/macosx/VLCVoutWindowController.m
modules/gui/macosx/VLCVoutWindowController.m
+79
-37
modules/gui/macosx/intf.h
modules/gui/macosx/intf.h
+0
-2
modules/gui/macosx/intf.m
modules/gui/macosx/intf.m
+4
-52
No files found.
modules/gui/macosx/CoreInteraction.m
View file @
7f84f44d
...
...
@@ -622,7 +622,7 @@ static VLCCoreInteraction *_o_sharedInstance = nil;
vlc_object_release
(
p_vout
);
}
else
{
// e.g. lion fullscreen toggle
BOOL
b_fs
=
var_ToggleBool
(
pl_Get
(
p_intf
),
"fullscreen"
);
[[
VLCMain
sharedInstance
]
setFullscreen
:
b_fs
forWindow
:
nil
];
[[
[
VLCMain
sharedInstance
]
voutController
]
setFullscreen
:
b_fs
forWindow
:
nil
];
}
}
...
...
modules/gui/macosx/VLCVoutWindowController.h
View file @
7f84f44d
...
...
@@ -45,16 +45,13 @@
-
(
VLCVoutView
*
)
setupVoutForWindow
:(
vout_window_t
*
)
p_wnd
withProposedVideoViewPosition
:(
NSRect
)
videoViewPosition
;
-
(
void
)
removeVoutforDisplay
:(
NSValue
*
)
o_key
;
-
(
void
)
setNativeVideoSize
:(
NSSize
)
size
forWindow
:(
vout_window_t
*
)
p_wnd
;
-
(
void
)
setWindowLevel
:(
NSInteger
)
i_level
forWindow
:(
vout_window_t
*
)
p_wnd
;
-
(
void
)
setFullscreen
:(
int
)
i_full
forWindow
:(
vout_window_t
*
)
p_wnd
;
-
(
void
)
updateWindowsControlsBarWithSelector
:(
SEL
)
aSel
;
-
(
VLCVideoWindowCommon
*
)
getWindow
:(
vout_window_t
*
)
p_wnd
;
-
(
void
)
updateWindowsUsingBlock
:(
void
(
^
)(
VLCVideoWindowCommon
*
o_window
))
windowUpdater
;
-
(
void
)
updateWindow
:(
vout_window_t
*
)
p_wnd
withSelector
:(
SEL
)
aSel
;
-
(
void
)
setNativeVideoSize
:(
NSSize
)
size
forWindow
:(
vout_window_t
*
)
p_wnd
;
-
(
void
)
setWindowLevel
:(
NSInteger
)
i_level
forWindow
:(
vout_window_t
*
)
p_wnd
;
-
(
void
)
updateWindowLevelForHelperWindows
:(
NSInteger
)
i_level
;
@end
modules/gui/macosx/VLCVoutWindowController.m
View file @
7f84f44d
...
...
@@ -53,6 +53,8 @@
[
super
dealloc
];
}
#pragma mark -
#pragma mark Methods for vout provider
-
(
VLCVoutView
*
)
setupVoutForWindow
:(
vout_window_t
*
)
p_wnd
withProposedVideoViewPosition
:(
NSRect
)
videoViewPosition
{
...
...
@@ -217,43 +219,6 @@
[[
VLCMain
sharedInstance
]
setActiveVideoPlayback
:
NO
];
}
-
(
void
)
updateWindowsControlsBarWithSelector
:(
SEL
)
aSel
{
[
o_vout_dict
enumerateKeysAndObjectsUsingBlock
:
^
(
id
key
,
id
obj
,
BOOL
*
stop
)
{
if
([
obj
respondsToSelector
:
@selector
(
controlsBar
)])
{
id
o_controlsBar
=
[
obj
controlsBar
];
if
(
o_controlsBar
)
[
o_controlsBar
performSelector
:
aSel
];
}
}];
}
-
(
void
)
updateWindow
:(
vout_window_t
*
)
p_wnd
withSelector
:(
SEL
)
aSel
;
{
VLCVideoWindowCommon
*
o_window
=
[
o_vout_dict
objectForKey
:[
NSValue
valueWithPointer
:
p_wnd
]];
if
(
!
o_window
)
{
msg_Err
(
VLCIntf
,
"Cannot call selector for nonexisting window"
);
return
;
}
[
o_window
performSelector
:
aSel
];
}
-
(
VLCVideoWindowCommon
*
)
getWindow
:(
vout_window_t
*
)
p_wnd
{
VLCVideoWindowCommon
*
o_window
=
[
o_vout_dict
objectForKey
:[
NSValue
valueWithPointer
:
p_wnd
]];
assert
(
o_window
);
return
o_window
;
}
-
(
void
)
updateWindowsUsingBlock
:(
void
(
^
)(
VLCVideoWindowCommon
*
o_window
))
windowUpdater
{
[
o_vout_dict
enumerateKeysAndObjectsUsingBlock
:
^
(
id
key
,
id
obj
,
BOOL
*
stop
)
{
if
([
obj
isKindOfClass
:
[
NSWindow
class
]])
windowUpdater
(
obj
);
}];
}
-
(
void
)
setNativeVideoSize
:(
NSSize
)
size
forWindow
:(
vout_window_t
*
)
p_wnd
{
...
...
@@ -288,6 +253,83 @@
[
o_window
setWindowLevel
:
i_level
];
}
-
(
void
)
setFullscreen
:(
int
)
i_full
forWindow
:(
vout_window_t
*
)
p_wnd
{
intf_thread_t
*
p_intf
=
VLCIntf
;
BOOL
b_nativeFullscreenMode
=
[[
VLCMain
sharedInstance
]
nativeFullscreenMode
];
if
(
!
p_intf
||
(
!
b_nativeFullscreenMode
&&
!
p_wnd
))
return
;
playlist_t
*
p_playlist
=
pl_Get
(
p_intf
);
BOOL
b_fullscreen
=
i_full
;
if
(
!
var_GetBool
(
p_playlist
,
"fullscreen"
)
!=
!
b_fullscreen
)
var_SetBool
(
p_playlist
,
"fullscreen"
,
b_fullscreen
);
VLCVideoWindowCommon
*
o_current_window
=
nil
;
if
(
p_wnd
)
o_current_window
=
[
o_vout_dict
objectForKey
:[
NSValue
valueWithPointer
:
p_wnd
]];
if
(
b_nativeFullscreenMode
)
{
if
(
!
o_current_window
)
o_current_window
=
[
VLCMainWindow
sharedInstance
];
assert
(
o_current_window
);
// fullscreen might be triggered twice (vout event)
// so ignore duplicate events here
if
((
b_fullscreen
&&
!
([
o_current_window
fullscreen
]
||
[
o_current_window
enteringFullscreenTransition
]))
||
(
!
b_fullscreen
&&
[
o_current_window
fullscreen
]))
{
[
o_current_window
toggleFullScreen
:
self
];
}
if
(
b_fullscreen
)
[
NSApp
setPresentationOptions
:(
NSApplicationPresentationFullScreen
|
NSApplicationPresentationAutoHideDock
|
NSApplicationPresentationAutoHideMenuBar
)];
else
[
NSApp
setPresentationOptions
:(
NSApplicationPresentationDefault
)];
}
else
{
assert
(
o_current_window
);
if
(
b_fullscreen
)
{
input_thread_t
*
p_input
=
pl_CurrentInput
(
p_intf
);
if
(
p_input
!=
NULL
&&
[[
VLCMain
sharedInstance
]
activeVideoPlayback
])
{
// activate app, as method can also be triggered from outside the app (prevents nasty window layout)
[
NSApp
activateIgnoringOtherApps
:
YES
];
[
o_current_window
enterFullscreen
];
}
if
(
p_input
)
vlc_object_release
(
p_input
);
}
else
{
// leaving fullscreen is always allowed
[
o_current_window
leaveFullscreen
];
}
}
}
#pragma mark -
#pragma mark Misc methods
-
(
void
)
updateWindowsControlsBarWithSelector
:(
SEL
)
aSel
{
[
o_vout_dict
enumerateKeysAndObjectsUsingBlock
:
^
(
id
key
,
id
obj
,
BOOL
*
stop
)
{
if
([
obj
respondsToSelector
:
@selector
(
controlsBar
)])
{
id
o_controlsBar
=
[
obj
controlsBar
];
if
(
o_controlsBar
)
[
o_controlsBar
performSelector
:
aSel
];
}
}];
}
-
(
void
)
updateWindowsUsingBlock
:(
void
(
^
)(
VLCVideoWindowCommon
*
o_window
))
windowUpdater
{
[
o_vout_dict
enumerateKeysAndObjectsUsingBlock
:
^
(
id
key
,
id
obj
,
BOOL
*
stop
)
{
if
([
obj
isKindOfClass
:
[
NSWindow
class
]])
windowUpdater
(
obj
);
}];
}
-
(
void
)
updateWindowLevelForHelperWindows
:(
NSInteger
)
i_level
{
if
(
var_InheritBool
(
VLCIntf
,
"video-wallpaper"
))
...
...
modules/gui/macosx/intf.h
View file @
7f84f44d
...
...
@@ -177,8 +177,6 @@ struct intf_sys_t
-
(
void
)
updateCurrentlyUsedHotkeys
;
-
(
BOOL
)
hasDefinedShortcutKey
:(
NSEvent
*
)
o_event
force
:(
BOOL
)
b_force
;
-
(
void
)
setFullscreen
:(
int
)
i_full
forWindow
:(
vout_window_t
*
)
p_wnd
;
-
(
void
)
PlaylistItemChanged
;
-
(
void
)
playbackStatusUpdated
;
-
(
void
)
sendDistributedNotificationWithUpdatedPlaybackStatus
;
...
...
modules/gui/macosx/intf.m
View file @
7f84f44d
...
...
@@ -172,8 +172,8 @@ int WindowOpen(vout_window_t *p_wnd, const vout_window_cfg_t *cfg)
int
i_full
=
1
;
SEL
sel
=
@selector
(
setFullscreen
:
forWindow
:
);
NSInvocation
*
inv
=
[
NSInvocation
invocationWithMethodSignature
:[[
VLCMain
sharedInstance
]
methodSignatureForSelector
:
sel
]];
[
inv
setTarget
:[
VLCMain
sharedInstance
]];
NSInvocation
*
inv
=
[
NSInvocation
invocationWithMethodSignature
:[[
[
VLCMain
sharedInstance
]
voutController
]
methodSignatureForSelector
:
sel
]];
[
inv
setTarget
:[
[
VLCMain
sharedInstance
]
voutController
]];
[
inv
setSelector
:
sel
];
[
inv
setArgument
:
&
i_full
atIndex
:
2
];
[
inv
setArgument
:
&
p_wnd
atIndex
:
3
];
...
...
@@ -236,8 +236,8 @@ static int WindowControl(vout_window_t *p_wnd, int i_query, va_list args)
int
i_full
=
va_arg
(
args
,
int
);
SEL
sel
=
@selector
(
setFullscreen
:
forWindow
:
);
NSInvocation
*
inv
=
[
NSInvocation
invocationWithMethodSignature
:[[
VLCMain
sharedInstance
]
methodSignatureForSelector
:
sel
]];
[
inv
setTarget
:[
VLCMain
sharedInstance
]];
NSInvocation
*
inv
=
[
NSInvocation
invocationWithMethodSignature
:[[
[
VLCMain
sharedInstance
]
voutController
]
methodSignatureForSelector
:
sel
]];
[
inv
setTarget
:[
[
VLCMain
sharedInstance
]
voutController
]];
[
inv
setSelector
:
sel
];
[
inv
setArgument
:
&
i_full
atIndex
:
2
];
// starting at 2!
[
inv
setArgument
:
&
p_wnd
atIndex
:
3
];
...
...
@@ -1253,54 +1253,6 @@ static VLCMain *_o_sharedMainInstance = nil;
#pragma mark -
#pragma mark Interface updaters
-
(
void
)
setFullscreen
:(
int
)
i_full
forWindow
:(
vout_window_t
*
)
p_wnd
{
if
(
!
p_intf
||
(
!
b_nativeFullscreenMode
&&
!
p_wnd
))
return
;
playlist_t
*
p_playlist
=
pl_Get
(
p_intf
);
BOOL
b_fullscreen
=
i_full
;
if
(
!
var_GetBool
(
p_playlist
,
"fullscreen"
)
!=
!
b_fullscreen
)
var_SetBool
(
p_playlist
,
"fullscreen"
,
b_fullscreen
);
if
(
b_nativeFullscreenMode
)
{
VLCVideoWindowCommon
*
o_active_window
=
nil
;
if
(
p_wnd
)
o_active_window
=
[
o_vout_controller
getWindow
:
p_wnd
];
else
o_active_window
=
o_mainwindow
;
// fullscreen might be triggered twice (vout event)
// so ignore duplicate events here
if
((
b_fullscreen
&&
!
([
o_active_window
fullscreen
]
||
[
o_active_window
enteringFullscreenTransition
]))
||
(
!
b_fullscreen
&&
[
o_active_window
fullscreen
]))
{
[
o_active_window
toggleFullScreen
:
self
];
}
if
(
b_fullscreen
)
[
NSApp
setPresentationOptions
:(
NSApplicationPresentationFullScreen
|
NSApplicationPresentationAutoHideDock
|
NSApplicationPresentationAutoHideMenuBar
)];
else
[
NSApp
setPresentationOptions
:(
NSApplicationPresentationDefault
)];
}
else
{
assert
(
p_wnd
);
if
(
b_fullscreen
)
{
input_thread_t
*
p_input
=
pl_CurrentInput
(
p_intf
);
if
(
p_input
!=
NULL
&&
[
self
activeVideoPlayback
])
{
// activate app, as method can also be triggered from outside the app (prevents nasty window layout)
[
NSApp
activateIgnoringOtherApps
:
YES
];
[
o_vout_controller
updateWindow
:
p_wnd
withSelector
:
@selector
(
enterFullscreen
)];
}
if
(
p_input
)
vlc_object_release
(
p_input
);
}
else
{
// leaving fullscreen is always allowed
[
o_vout_controller
updateWindow
:
p_wnd
withSelector
:
@selector
(
leaveFullscreen
)];
}
}
}
-
(
void
)
PlaylistItemChanged
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment