aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTapani Pälli <tapani.palli@intel.com>2015-02-09 15:24:47 +0200
committerChad Versace <chad.versace@intel.com>2015-02-23 14:27:05 -0800
commit6e810be273abbb33910c709b2a20ff9afad8ccc6 (patch)
treea95012cbab28580cfb3b593a2aa53b23d5cb8cb0
parentd963807565b3644000707cce734e9b5bf0f95511 (diff)
downloadwaffle-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.cpp13
-rw-r--r--src/waffle/nacl/nacl_container.h1
-rw-r--r--src/waffle/nacl/nacl_platform.c4
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*