Commit b5e8b9a0 authored by David Fuhrmann's avatar David Fuhrmann Committed by Jean-Baptiste Kempf

macosx: Implement different way to always store playback position

The previous solution caused different problems. Therefore,
add this as a workaround to deinitialize InputManager, even if
the object still has strong references and therefore cannot be
destroyed yet.

The comment explains some problems, which look like not easily
fixable for the 3.0 branch.

close #19704

(cherry picked from commit 2c0ea2ff)
Signed-off-by: Jean-Baptiste Kempf's avatarJean-Baptiste Kempf <>
parent 9ec38cd7
......@@ -32,6 +32,7 @@
@interface VLCInputManager : NSObject
- (id)initWithMain:(VLCMain *)o_mainObj;
- (void)deinit;
- (void)inputThreadChanged;
......@@ -186,7 +186,14 @@ static int InputEvent(vlc_object_t *p_this, const char *psz_var,
return self;
- (void)dealloc
* TODO: Investigate if this can be moved to dealloc again. Current problems:
* - dealloc might be never called of this object, as strong references could be in the
* (already stopped) main loop, preventing the refcount to go 0.
* - Calling var_DelCallback waits for all callbacks to finish. Thus, while dealloc is already
* called, callback might grab a reference to this object again, which could cause trouble.
- (void)deinit
msg_Dbg(getIntf(), "Deinitializing input manager");
if (p_current_input) {
......@@ -327,6 +327,7 @@ static VLCMain *sharedInstance = nil;
b_intf_terminating = true;
[_input_manager onPlaybackHasEnded:nil];
[_input_manager deinit];
if (notification == nil)
[[NSNotificationCenter defaultCenter] postNotificationName: NSApplicationWillTerminateNotification object: nil];
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment