diff options
author | Tapani Pälli <tapani.palli@intel.com> | 2015-02-09 15:24:47 +0200 |
---|---|---|
committer | Chad Versace <chad.versace@intel.com> | 2015-02-23 14:27:05 -0800 |
commit | 6e810be273abbb33910c709b2a20ff9afad8ccc6 (patch) | |
tree | a95012cbab28580cfb3b593a2aa53b23d5cb8cb0 | |
parent | d963807565b3644000707cce734e9b5bf0f95511 (diff) | |
download | waffle-6e810be273abbb33910c709b2a20ff9afad8ccc6.tar.gz |
nacl: add implementation for waffle_make_current
v2: cleanup code, no need for separate c++ function (Chad Versace)
release context when ctx and window are NULL (Emil Velikov)
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Chad Versace <chad.versace@intel.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
-rw-r--r-- | src/waffle/nacl/nacl_container.cpp | 13 | ||||
-rw-r--r-- | src/waffle/nacl/nacl_container.h | 1 | ||||
-rw-r--r-- | src/waffle/nacl/nacl_platform.c | 4 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/waffle/nacl/nacl_container.cpp b/src/waffle/nacl/nacl_container.cpp index 5dd44a8..fe907ff 100644 --- a/src/waffle/nacl/nacl_container.cpp +++ b/src/waffle/nacl/nacl_container.cpp @@ -181,3 +181,16 @@ nacl_resize(struct nacl_container *nc, int32_t width, int32_t height) } return false; } + +extern "C" bool +nacl_makecurrent(nacl_container *nc, bool release) +{ + waffle::nacl_container *cpp_nc = + reinterpret_cast<waffle::nacl_container*>(nc); + + PP_Resource ctx = release ? 0 : cpp_nc->ctx->pp_resource(); + + cpp_nc->glSetCurrentContextPPAPI(ctx); + + return true; +} diff --git a/src/waffle/nacl/nacl_container.h b/src/waffle/nacl/nacl_container.h index d1cb11d..ca26a1f 100644 --- a/src/waffle/nacl/nacl_container.h +++ b/src/waffle/nacl/nacl_container.h @@ -41,6 +41,7 @@ struct nacl_container *nacl_init(); void nacl_teardown(struct nacl_container *nc); bool nacl_context_init(struct nacl_container *nc, struct nacl_config *cfg); bool nacl_resize(struct nacl_container *nc, int32_t width, int32_t height); +bool nacl_makecurrent(struct nacl_container *nc, bool release); void nacl_context_fini(struct nacl_container *nc); #ifdef __cplusplus diff --git a/src/waffle/nacl/nacl_platform.c b/src/waffle/nacl/nacl_platform.c index b4df9d9..c4fefe5 100644 --- a/src/waffle/nacl/nacl_platform.c +++ b/src/waffle/nacl/nacl_platform.c @@ -68,7 +68,9 @@ nacl_platform_make_current(struct wcore_platform *wc_self, struct wcore_window *wc_window, struct wcore_context *wc_ctx) { - return false; + bool release = (!wc_window && !wc_ctx); + return nacl_makecurrent(nacl_platform(wc_self)->nacl, + release); } struct wcore_platform* |