aboutsummaryrefslogtreecommitdiffstats
path: root/pugl/pugl_stub.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-11-20 22:38:49 +0100
committerDavid Robillard <d@drobilla.net>2019-11-21 00:03:47 +0100
commit92288da76e879149179292f90dd2760f587c9132 (patch)
treeae45b25fc77623c5ef12265a936f927ada143f39 /pugl/pugl_stub.h
parent1e0b9d8d60d5e499775eddb30d53761379fa59e5 (diff)
downloadpugl-92288da76e879149179292f90dd2760f587c9132.tar.gz
pugl-92288da76e879149179292f90dd2760f587c9132.tar.bz2
pugl-92288da76e879149179292f90dd2760f587c9132.zip
Rename "backend" headers
Working on Vulkan clarified what has always been slightly smelly about the design and organization here: not everything that is API specific is really in a "backend" (a PuglBackend). The concrete example is puglGetProcAddress(), which only makes sense for GL and is actually implemented in the "backend" files. Arguably puglGetContext() is also such a thing. So, rename the headers so they can be the place where API-specific things go in general, which happens to include a backend most of the time. The stub is a bit of an exception to this, but whatever. The includes look tidier this way. In place of the old headers are compatibility stubs that just emit a warning and include the new version, which will be maintained for a while.
Diffstat (limited to 'pugl/pugl_stub.h')
-rw-r--r--pugl/pugl_stub.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/pugl/pugl_stub.h b/pugl/pugl_stub.h
new file mode 100644
index 0000000..40d1036
--- /dev/null
+++ b/pugl/pugl_stub.h
@@ -0,0 +1,113 @@
+/*
+ Copyright 2019 David Robillard <http://drobilla.net>
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+/**
+ @file pugl_stub.h Stub backend functions and accessor declaration.
+*/
+
+#ifndef PUGL_PUGL_STUB_H
+#define PUGL_PUGL_STUB_H
+
+#include "pugl/pugl.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ Stub graphics backend.
+
+ This backend just creates a simple native window without setting up any
+ portable graphics API.
+*/
+PUGL_API
+const PuglBackend*
+puglStubBackend(void);
+
+/**
+ @name Stub backend functions
+
+ Implementations of stub backend functions which do nothing and always return
+ success. These do not make for a usable backend on their own since the
+ platform implementation would fail to create a window, but are useful for
+ other backends to reuse since not all need non-trivial implementations of
+ every backend function.
+
+ @{
+*/
+
+static inline PuglStatus
+puglStubConfigure(PuglView* view)
+{
+ (void)view;
+ return PUGL_SUCCESS;
+}
+
+static inline PuglStatus
+puglStubCreate(PuglView* view)
+{
+ (void)view;
+ return PUGL_SUCCESS;
+}
+
+static inline PuglStatus
+puglStubDestroy(PuglView* view)
+{
+ (void)view;
+ return PUGL_SUCCESS;
+}
+
+static inline PuglStatus
+puglStubEnter(PuglView* view, bool drawing)
+{
+ (void)view;
+ (void)drawing;
+ return PUGL_SUCCESS;
+}
+
+static inline PuglStatus
+puglStubLeave(PuglView* view, bool drawing)
+{
+ (void)view;
+ (void)drawing;
+ return PUGL_SUCCESS;
+}
+
+static inline PuglStatus
+puglStubResize(PuglView* view, int width, int height)
+{
+ (void)view;
+ (void)width;
+ (void)height;
+ return PUGL_SUCCESS;
+}
+
+static inline void*
+puglStubGetContext(PuglView* view)
+{
+ (void)view;
+ return NULL;
+}
+
+/**
+ @}
+*/
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif // PUGL_PUGL_STUB_H