aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-10-22 14:25:47 +0200
committerDavid Robillard <d@drobilla.net>2020-10-22 14:25:47 +0200
commiteadf8e9a92414a7443440c810662a30af5ff3c77 (patch)
tree8c6a2f87dce804487edd595b6067d2029218a469 /include
parent336ab6bcf31df95edccc8bafce11149650ddeb46 (diff)
downloadpugl-eadf8e9a92414a7443440c810662a30af5ff3c77.tar.gz
pugl-eadf8e9a92414a7443440c810662a30af5ff3c77.tar.bz2
pugl-eadf8e9a92414a7443440c810662a30af5ff3c77.zip
Resurrect puglEnterContext() and puglLeaveContext()
Even though loading is now better handled with create events, there are still situations with OpenGL where it's difficult to avoid explicitly entering and leaving the context. So, resurrect these functions, but remove the drawing parameter to make it clear that they must never be used for drawing. This breaks the deprecated API since the drawing parameter would be inappropriate for the stable API, and a decent alternative name isn't available.
Diffstat (limited to 'include')
-rw-r--r--include/pugl/detail/implementation.c22
-rw-r--r--include/pugl/pugl.h61
2 files changed, 34 insertions, 49 deletions
diff --git a/include/pugl/detail/implementation.c b/include/pugl/detail/implementation.c
index 6a5f932..e9a3450 100644
--- a/include/pugl/detail/implementation.c
+++ b/include/pugl/detail/implementation.c
@@ -331,30 +331,20 @@ puglDispatchEvents(PuglWorld* world)
return puglUpdate(world, 0.0);
}
+#endif
+
PuglStatus
-puglEnterContext(PuglView* view, bool drawing)
+puglEnterContext(PuglView* view)
{
- const PuglEventExpose expose = {
- PUGL_EXPOSE, 0, 0.0, 0.0, view->frame.width, view->frame.height};
-
- view->backend->enter(view, drawing ? &expose : NULL);
-
- return PUGL_SUCCESS;
+ return view->backend->enter(view, NULL);
}
PuglStatus
-puglLeaveContext(PuglView* view, bool drawing)
+puglLeaveContext(PuglView* view)
{
- const PuglEventExpose expose = {
- PUGL_EXPOSE, 0, 0.0, 0.0, view->frame.width, view->frame.height};
-
- view->backend->leave(view, drawing ? &expose : NULL);
-
- return PUGL_SUCCESS;
+ return view->backend->leave(view, NULL);
}
-#endif
-
PuglStatus
puglSetEventFunc(PuglView* view, PuglEventFunc eventFunc)
{
diff --git a/include/pugl/pugl.h b/include/pugl/pugl.h
index 13c0b22..96482c1 100644
--- a/include/pugl/pugl.h
+++ b/include/pugl/pugl.h
@@ -1121,6 +1121,34 @@ 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.
+*/
+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.
+*/
+PUGL_API PuglStatus
+puglLeaveContext(PuglView* view);
+
+/**
Get the graphics context.
This is a backend-specific context used for drawing if the backend graphics
@@ -1575,39 +1603,6 @@ puglPollEvents(PuglWorld* world, double timeout);
PUGL_API PUGL_DEPRECATED_BY("puglUpdate") PuglStatus
puglDispatchEvents(PuglWorld* world);
-/**
- Enter the graphics context.
-
- Note that, unlike some similar libraries, Pugl automatically enters and
- leaves the graphics context when required and application should not
- normally do this. Drawing in Pugl is only allowed during the processing of
- an expose event.
-
- However, this can be used to enter the graphics context elsewhere, for
- example to call any GL functions during setup.
-
- @param view The view being entered.
- @param drawing If true, prepare for drawing.
-
- @deprecated Set up graphics when a #PUGL_CREATE event is received.
-*/
-PUGL_API PUGL_DEPRECATED_BY("PUGL_CREATE") PuglStatus
-puglEnterContext(PuglView* view, bool drawing);
-
-/**
- Leave the graphics context.
-
- This must be called after puglEnterContext() with a matching `drawing`
- parameter.
-
- @param view The view being left.
- @param drawing If true, finish drawing, for example by swapping buffers.
-
- @deprecated Shut down graphics when a #PUGL_DESTROY event is received.
-*/
-PUGL_API PUGL_DEPRECATED_BY("PUGL_DESTROY") PuglStatus
-puglLeaveContext(PuglView* view, bool drawing);
-
#endif // PUGL_DISABLE_DEPRECATED
/**