[waffle] [PATCH v2 6/8] nacl: add implementation for waffle_make_current

Tapani Pälli tapani.palli at intel.com
Mon Feb 9 05:24:47 PST 2015


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 at intel.com>
---
 src/waffle/nacl/nacl_container.cpp | 13 +++++++++++++
 src/waffle/nacl/nacl_container.h   |  1 +
 src/waffle/nacl/nacl_platform.c    |  4 +++-
 3 files changed, 17 insertions(+), 1 deletion(-)

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*
-- 
2.1.0



More information about the waffle mailing list