diff options
author | David Robillard <d@drobilla.net> | 2020-11-22 12:34:35 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-11-25 14:18:04 +0100 |
commit | 7ce9b578a4433f9606b14291fb3b816aa67999d9 (patch) | |
tree | 917fd395aac4708142776b3826900f94e859de53 | |
parent | 3e9a2e01da169007b6fc16492f812055645f6d5f (diff) | |
download | pugl-7ce9b578a4433f9606b14291fb3b816aa67999d9.tar.gz pugl-7ce9b578a4433f9606b14291fb3b816aa67999d9.tar.bz2 pugl-7ce9b578a4433f9606b14291fb3b816aa67999d9.zip |
Move puglEnterContext and puglLeaveContext to GL backends
These only do anything for OpenGL, and it seems unlikely that they will ever be
used for anything else. So, move them to the GL headers to remove clutter from
the core API, and ensure that they are only used in GL applications that
include the appropriate headers and link with a GL backend.
Also add missing C++ bindings.
-rw-r--r-- | bindings/cxx/include/pugl/gl.hpp | 15 | ||||
-rw-r--r-- | include/pugl/gl.h | 18 | ||||
-rw-r--r-- | include/pugl/pugl.h | 30 | ||||
-rw-r--r-- | src/implementation.c | 12 | ||||
-rw-r--r-- | src/mac_gl.m | 12 | ||||
-rw-r--r-- | src/win_gl.c | 12 | ||||
-rw-r--r-- | src/x11_gl.c | 12 |
7 files changed, 69 insertions, 42 deletions
diff --git a/bindings/cxx/include/pugl/gl.hpp b/bindings/cxx/include/pugl/gl.hpp index ba7143b..529babb 100644 --- a/bindings/cxx/include/pugl/gl.hpp +++ b/bindings/cxx/include/pugl/gl.hpp @@ -24,6 +24,7 @@ #include "pugl/gl.h" #include "pugl/pugl.h" +#include "pugl/pugl.hpp" namespace pugl { @@ -44,6 +45,20 @@ getProcAddress(const char* name) noexcept return puglGetProcAddress(name); } +/// @copydoc puglEnterContext +inline Status +enterContext(View& view) noexcept +{ + return static_cast<Status>(puglEnterContext(view.cobj())); +} + +/// @copydoc puglLeaveContext +inline Status +leaveContext(View& view) noexcept +{ + return static_cast<Status>(puglLeaveContext(view.cobj())); +} + /// @copydoc puglGlBackend inline const PuglBackend* glBackend() noexcept diff --git a/include/pugl/gl.h b/include/pugl/gl.h index 36b2887..79cb6e9 100644 --- a/include/pugl/gl.h +++ b/include/pugl/gl.h @@ -74,6 +74,24 @@ PUGL_API PuglGlFunc puglGetProcAddress(const char* name); /** + Enter the OpenGL context. + + This can be used to enter the graphics context in unusual situations, for + doing things like loading textures. Note that this must not be used for + drawing, which may only be done while processing an expose event. +*/ +PUGL_API PuglStatus +puglEnterContext(PuglView* view); + +/** + Leave the OpenGL context. + + This must only be called after puglEnterContext(). +*/ +PUGL_API PuglStatus +puglLeaveContext(PuglView* view); + +/** OpenGL graphics backend. Pass the returned value to puglSetBackend() to draw to a view with OpenGL. diff --git a/include/pugl/pugl.h b/include/pugl/pugl.h index 4018c45..30d92c6 100644 --- a/include/pugl/pugl.h +++ b/include/pugl/pugl.h @@ -1064,36 +1064,6 @@ puglGetNativeWindow(PuglView* view); */ /** - Enter the graphics context. - - This can be used to enter the graphics context in unusual situations, for - doing things like loading textures. Note that this must not be used for - drawing, which may only be done while processing an expose event. Note also - that initial setup should not use this, but instead be done while handling a - #PUGL_CREATE event. - - - Cairo: Does nothing. - - OpenGL: Sets the current OpenGL context. - - Stub: Does nothing. - - Vulkan: Does nothing. -*/ -PUGL_API PuglStatus -puglEnterContext(PuglView* view); - -/** - Leave the graphics context. - - This must only be called after puglEnterContext(). - - - Cairo: Does nothing. - - OpenGL: Resets the current OpenGL context. - - Stub: Does nothing. - - Vulkan: Does nothing. -*/ -PUGL_API PuglStatus -puglLeaveContext(PuglView* view); - -/** Get the graphics context. This is a backend-specific context used for drawing if the backend graphics diff --git a/src/implementation.c b/src/implementation.c index 88794f2..35c4c26 100644 --- a/src/implementation.c +++ b/src/implementation.c @@ -292,18 +292,6 @@ puglDispatchEvents(PuglWorld* world) #endif PuglStatus -puglEnterContext(PuglView* view) -{ - return view->backend->enter(view, NULL); -} - -PuglStatus -puglLeaveContext(PuglView* view) -{ - return view->backend->leave(view, NULL); -} - -PuglStatus puglSetEventFunc(PuglView* view, PuglEventFunc eventFunc) { view->eventFunc = eventFunc; diff --git a/src/mac_gl.m b/src/mac_gl.m index f8847c0..8a48578 100644 --- a/src/mac_gl.m +++ b/src/mac_gl.m @@ -189,6 +189,18 @@ puglGetProcAddress(const char *name) return func; } +PuglStatus +puglEnterContext(PuglView* view) +{ + return view->backend->enter(view, NULL); +} + +PuglStatus +puglLeaveContext(PuglView* view) +{ + return view->backend->leave(view, NULL); +} + const PuglBackend* puglGlBackend(void) { diff --git a/src/win_gl.c b/src/win_gl.c index e46ece8..662baef 100644 --- a/src/win_gl.c +++ b/src/win_gl.c @@ -310,6 +310,18 @@ puglGetProcAddress(const char* name) : (PuglGlFunc)GetProcAddress(GetModuleHandle("opengl32.dll"), name); } +PuglStatus +puglEnterContext(PuglView* view) +{ + return view->backend->enter(view, NULL); +} + +PuglStatus +puglLeaveContext(PuglView* view) +{ + return view->backend->leave(view, NULL); +} + const PuglBackend* puglGlBackend(void) { diff --git a/src/x11_gl.c b/src/x11_gl.c index 34ac7e8..64061d1 100644 --- a/src/x11_gl.c +++ b/src/x11_gl.c @@ -209,6 +209,18 @@ puglGetProcAddress(const char* name) return glXGetProcAddress((const uint8_t*)name); } +PuglStatus +puglEnterContext(PuglView* view) +{ + return view->backend->enter(view, NULL); +} + +PuglStatus +puglLeaveContext(PuglView* view) +{ + return view->backend->leave(view, NULL); +} + const PuglBackend* puglGlBackend(void) { |