Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
bf9fed9b
Commit
bf9fed9b
authored
Mar 03, 2007
by
Pierre d'Herbemont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Mac OS X gui: Protect the fullscreen animation by a lock.
parent
980b1a6a
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
1 deletion
+38
-1
modules/gui/macosx/embeddedwindow.h
modules/gui/macosx/embeddedwindow.h
+4
-0
modules/gui/macosx/embeddedwindow.m
modules/gui/macosx/embeddedwindow.m
+31
-1
modules/gui/macosx/vout.m
modules/gui/macosx/vout.m
+3
-0
No files found.
modules/gui/macosx/embeddedwindow.h
View file @
bf9fed9b
...
@@ -50,6 +50,7 @@
...
@@ -50,6 +50,7 @@
NSView
*
o_temp_view
;
NSView
*
o_temp_view
;
/* set to yes if we are fullscreen and all animations are over */
/* set to yes if we are fullscreen and all animations are over */
BOOL
b_fullscreen
;
BOOL
b_fullscreen
;
NSLock
*
o_animation_lock
;
}
}
-
(
void
)
setTime
:(
NSString
*
)
o_arg_ime
position
:(
float
)
f_position
;
-
(
void
)
setTime
:(
NSString
*
)
o_arg_ime
position
:(
float
)
f_position
;
...
@@ -60,6 +61,9 @@
...
@@ -60,6 +61,9 @@
-
(
BOOL
)
isFullscreen
;
-
(
BOOL
)
isFullscreen
;
-
(
void
)
lockFullscreenAnimation
;
-
(
void
)
unlockFullscreenAnimation
;
-
(
void
)
enterFullscreen
;
-
(
void
)
enterFullscreen
;
-
(
void
)
leaveFullscreen
;
-
(
void
)
leaveFullscreen
;
...
...
modules/gui/macosx/embeddedwindow.m
View file @
bf9fed9b
...
@@ -67,6 +67,7 @@
...
@@ -67,6 +67,7 @@
/* Not fullscreen when we wake up */
/* Not fullscreen when we wake up */
[
o_btn_fullscreen
setState
:
NO
];
[
o_btn_fullscreen
setState
:
NO
];
b_fullscreen
=
NO
;
b_fullscreen
=
NO
;
o_animation_lock
=
[[
NSLock
alloc
]
init
];
}
}
-
(
void
)
setTime
:(
NSString
*
)
o_arg_time
position
:(
float
)
f_position
-
(
void
)
setTime
:(
NSString
*
)
o_arg_time
position
:(
float
)
f_position
...
@@ -144,6 +145,16 @@
...
@@ -144,6 +145,16 @@
return
b_fullscreen
;
return
b_fullscreen
;
}
}
-
(
void
)
lockFullscreenAnimation
{
[
o_animation_lock
lock
];
}
-
(
void
)
unlockFullscreenAnimation
{
[
o_animation_lock
unlock
];
}
-
(
void
)
enterFullscreen
-
(
void
)
enterFullscreen
{
{
NSMutableDictionary
*
dict1
,
*
dict2
;
NSMutableDictionary
*
dict1
,
*
dict2
;
...
@@ -156,6 +167,8 @@
...
@@ -156,6 +167,8 @@
screen
=
[
NSScreen
screenWithDisplayID
:(
CGDirectDisplayID
)
var_GetInteger
(
p_vout
,
"video-device"
)];
screen
=
[
NSScreen
screenWithDisplayID
:(
CGDirectDisplayID
)
var_GetInteger
(
p_vout
,
"video-device"
)];
vlc_object_release
(
p_vout
);
vlc_object_release
(
p_vout
);
[
self
lockFullscreenAnimation
];
if
(
!
screen
)
if
(
!
screen
)
screen
=
[
self
screen
];
screen
=
[
self
screen
];
...
@@ -204,7 +217,10 @@
...
@@ -204,7 +217,10 @@
CGDisplayFade
(
token
,
0
.
5
,
kCGDisplayBlendSolidColor
,
kCGDisplayBlendNormal
,
0
,
0
,
0
,
NO
);
CGDisplayFade
(
token
,
0
.
5
,
kCGDisplayBlendSolidColor
,
kCGDisplayBlendNormal
,
0
,
0
,
0
,
NO
);
CGReleaseDisplayFadeReservation
(
token
);
CGReleaseDisplayFadeReservation
(
token
);
/* Will release the lock */
[
self
hasBecomeFullscreen
];
[
self
hasBecomeFullscreen
];
return
;
return
;
}
}
...
@@ -221,12 +237,16 @@
...
@@ -221,12 +237,16 @@
{
{
/* We were already fullscreen nothing to do when NSAnimation
/* We were already fullscreen nothing to do when NSAnimation
* is not supported */
* is not supported */
[
self
unlockFullscreenAnimation
];
return
;
return
;
}
}
/* We are in fullscreen (and no animation is running) */
/* We are in fullscreen (and no animation is running) */
if
(
b_fullscreen
)
if
(
b_fullscreen
)
{
[
self
unlockFullscreenAnimation
];
return
;
return
;
}
if
(
o_fullscreen_anim1
)
if
(
o_fullscreen_anim1
)
{
{
...
@@ -273,6 +293,7 @@
...
@@ -273,6 +293,7 @@
[
o_fullscreen_anim2
startWhenAnimation
:
o_fullscreen_anim1
reachesProgress
:
1
.
0
];
[
o_fullscreen_anim2
startWhenAnimation
:
o_fullscreen_anim1
reachesProgress
:
1
.
0
];
[
o_fullscreen_anim1
startAnimation
];
[
o_fullscreen_anim1
startAnimation
];
/* fullscreenAnimation will be unlocked when animation ends */
}
}
-
(
void
)
hasBecomeFullscreen
-
(
void
)
hasBecomeFullscreen
...
@@ -287,13 +308,16 @@
...
@@ -287,13 +308,16 @@
[[[[
VLCMain
sharedInstance
]
getControls
]
getFSPanel
]
setActive
:
nil
];
[[[[
VLCMain
sharedInstance
]
getControls
]
getFSPanel
]
setActive
:
nil
];
b_fullscreen
=
YES
;
b_fullscreen
=
YES
;
[
self
unlockFullscreenAnimation
];
}
}
-
(
void
)
leaveFullscreen
-
(
void
)
leaveFullscreen
{
{
NSMutableDictionary
*
dict1
,
*
dict2
;
NSMutableDictionary
*
dict1
,
*
dict2
;
NSRect
frame
;
NSRect
frame
;
[
self
lockFullscreenAnimation
];
b_fullscreen
=
NO
;
b_fullscreen
=
NO
;
[
o_btn_fullscreen
setState
:
NO
];
[
o_btn_fullscreen
setState
:
NO
];
...
@@ -302,7 +326,10 @@
...
@@ -302,7 +326,10 @@
/* Don't do anything if o_fullscreen_window is already closed */
/* Don't do anything if o_fullscreen_window is already closed */
if
(
!
o_fullscreen_window
)
if
(
!
o_fullscreen_window
)
{
[
self
lockFullscreenAnimation
];
return
;
return
;
}
if
(
!
[
self
isVisible
]
||
MACOS_VERSION
<
10
.
4
f
)
if
(
!
[
self
isVisible
]
||
MACOS_VERSION
<
10
.
4
f
)
{
{
...
@@ -317,6 +344,7 @@
...
@@ -317,6 +344,7 @@
[[[[
VLCMain
sharedInstance
]
getControls
]
getFSPanel
]
setNonActive
:
nil
];
[[[[
VLCMain
sharedInstance
]
getControls
]
getFSPanel
]
setNonActive
:
nil
];
SetSystemUIMode
(
kUIModeNormal
,
kUIOptionAutoShowMenuBar
);
SetSystemUIMode
(
kUIModeNormal
,
kUIOptionAutoShowMenuBar
);
/* Will release the lock */
[
self
hasEndedFullscreen
];
[
self
hasEndedFullscreen
];
CGDisplayFade
(
token
,
0
.
5
,
kCGDisplayBlendSolidColor
,
kCGDisplayBlendNormal
,
0
,
0
,
0
,
NO
);
CGDisplayFade
(
token
,
0
.
5
,
kCGDisplayBlendSolidColor
,
kCGDisplayBlendNormal
,
0
,
0
,
0
,
NO
);
...
@@ -369,6 +397,7 @@
...
@@ -369,6 +397,7 @@
[
o_fullscreen_anim1
setFrameRate
:
30
];
[
o_fullscreen_anim1
setFrameRate
:
30
];
[
o_fullscreen_anim2
startWhenAnimation
:
o_fullscreen_anim1
reachesProgress
:
1
.
0
];
[
o_fullscreen_anim2
startWhenAnimation
:
o_fullscreen_anim1
reachesProgress
:
1
.
0
];
[
o_fullscreen_anim1
startAnimation
];
[
o_fullscreen_anim1
startAnimation
];
/* fullscreenAnimation will be unlocked when animation ends */
}
}
-
(
void
)
hasEndedFullscreen
-
(
void
)
hasEndedFullscreen
...
@@ -388,6 +417,7 @@
...
@@ -388,6 +417,7 @@
[
o_fullscreen_window
release
];
[
o_fullscreen_window
release
];
o_fullscreen_window
=
nil
;
o_fullscreen_window
=
nil
;
[
self
unlockFullscreenAnimation
];
}
}
-
(
void
)
animationDidEnd
:(
NSAnimation
*
)
animation
-
(
void
)
animationDidEnd
:(
NSAnimation
*
)
animation
...
...
modules/gui/macosx/vout.m
View file @
bf9fed9b
...
@@ -929,6 +929,8 @@ int DeviceCallback( vlc_object_t *p_this, const char *psz_variable,
...
@@ -929,6 +929,8 @@ int DeviceCallback( vlc_object_t *p_this, const char *psz_variable,
[
o_window
setAlphaValue
:
var_GetFloat
(
p_vout
,
"macosx-opaqueness"
)];
[
o_window
setAlphaValue
:
var_GetFloat
(
p_vout
,
"macosx-opaqueness"
)];
[
self
updateTitle
];
[
self
updateTitle
];
[
o_window
lockFullscreenAnimation
];
/* Make the window the front and key window before animating */
/* Make the window the front and key window before animating */
if
([
o_window
isVisible
]
&&
(
!
[
o_window
isFullscreen
]))
if
([
o_window
isVisible
]
&&
(
!
[
o_window
isFullscreen
]))
[
o_window
makeKeyAndOrderFront
:
self
];
[
o_window
makeKeyAndOrderFront
:
self
];
...
@@ -938,6 +940,7 @@ int DeviceCallback( vlc_object_t *p_this, const char *psz_variable,
...
@@ -938,6 +940,7 @@ int DeviceCallback( vlc_object_t *p_this, const char *psz_variable,
/* Make sure our window is visible, if we are not in fullscreen */
/* Make sure our window is visible, if we are not in fullscreen */
if
(
!
[
o_window
isFullscreen
])
if
(
!
[
o_window
isFullscreen
])
[
o_window
makeKeyAndOrderFront
:
self
];
[
o_window
makeKeyAndOrderFront
:
self
];
[
o_window
unlockFullscreenAnimation
];
}
}
return
b_return
;
return
b_return
;
...
...
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