diff options
author | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-09-28 13:51:29 +0200 |
---|---|---|
committer | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-09-28 15:08:40 +0200 |
commit | 9d3943840cb472e7921a933a06477f53eca4a17e (patch) | |
tree | d993adfc14f5c84a2549a7fdea7ef551fc6a4482 /video/out/cocoa_common.m | |
parent | 73808cd8f0dd30e4cf361fc4bce20cb347e65172 (diff) | |
download | mpv-9d3943840cb472e7921a933a06477f53eca4a17e.tar.bz2 mpv-9d3943840cb472e7921a933a06477f53eca4a17e.tar.xz |
cocoa_common: call gl_clear indirectly
glClear needs GL headers and we don't want those in `cocoa_common`. Create
a callback in `gl_cocoa` and register it `cocoa_common`.
Fixes #264
Diffstat (limited to 'video/out/cocoa_common.m')
-rw-r--r-- | video/out/cocoa_common.m | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/video/out/cocoa_common.m b/video/out/cocoa_common.m index b15ffd3d36..85d92c861f 100644 --- a/video/out/cocoa_common.m +++ b/video/out/cocoa_common.m @@ -65,6 +65,8 @@ struct vo_cocoa_state { NSLock *lock; bool enable_resize_redraw; + void *ctx; + void (*gl_clear)(void *ctx); void (*resize_redraw)(struct vo *vo, int w, int h); struct mp_log *log; @@ -163,6 +165,14 @@ void vo_cocoa_register_resize_callback(struct vo *vo, s->resize_redraw = cb; } +void vo_cocoa_register_gl_clear_callback(struct vo *vo, void *ctx, + void (*cb)(void *ctx)) +{ + struct vo_cocoa_state *s = vo->cocoa; + s->ctx = ctx; + s->gl_clear = cb; +} + static int get_screen_handle(struct vo *vo, int identifier, NSWindow *window, NSScreen **screen) { struct vo_cocoa_state *s = vo->cocoa; @@ -361,8 +371,7 @@ static void vo_cocoa_resize_redraw(struct vo *vo, int width, int height) s->resize_redraw(vo, width, height); s->skip_next_swap_buffer = true; } else { - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + s->gl_clear(s->ctx); } [s->gl_ctx flushBuffer]; |