mirror of https://github.com/mpv-player/mpv
cocoa: don't send messages to uninitialized gl contexts
This should fix some crashes where we sent makeCurrentContext to a context that was being freed from another thread. /cc @mpv-player/stable
This commit is contained in:
parent
1942e424e3
commit
c76958d20c
|
@ -345,6 +345,9 @@ static void vo_cocoa_resize_redraw(struct vo *vo, int width, int height)
|
||||||
if (!s->resize_redraw)
|
if (!s->resize_redraw)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!s->gl_ctx)
|
||||||
|
return;
|
||||||
|
|
||||||
vo_cocoa_set_current_context(vo, true);
|
vo_cocoa_set_current_context(vo, true);
|
||||||
|
|
||||||
[s->gl_ctx update];
|
[s->gl_ctx update];
|
||||||
|
@ -400,6 +403,7 @@ void vo_cocoa_release_nsgl_ctx(struct vo *vo)
|
||||||
{
|
{
|
||||||
struct vo_cocoa_state *s = vo->cocoa;
|
struct vo_cocoa_state *s = vo->cocoa;
|
||||||
[s->gl_ctx release];
|
[s->gl_ctx release];
|
||||||
|
s->gl_ctx = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
int vo_cocoa_config_window(struct vo *vo, uint32_t flags, void *gl_ctx)
|
int vo_cocoa_config_window(struct vo *vo, uint32_t flags, void *gl_ctx)
|
||||||
|
@ -454,6 +458,7 @@ void vo_cocoa_set_current_context(struct vo *vo, bool current)
|
||||||
if (!s->inside_sync_section)
|
if (!s->inside_sync_section)
|
||||||
[s->lock lock];
|
[s->lock lock];
|
||||||
|
|
||||||
|
if (s->gl_ctx)
|
||||||
[s->gl_ctx makeCurrentContext];
|
[s->gl_ctx makeCurrentContext];
|
||||||
} else {
|
} else {
|
||||||
[NSOpenGLContext clearCurrentContext];
|
[NSOpenGLContext clearCurrentContext];
|
||||||
|
|
Loading…
Reference in New Issue