aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-10-27 11:20:47 +0100
committerDavid Robillard <d@drobilla.net>2019-11-03 21:03:18 +0100
commit14c7cb54a913be5a505148068582d9c56e3d1681 (patch)
treeb23af8d477bb623ae743492367e8ebeb0a43e699
parent84754fdb2ff35779378e032ec2f195a22d66fe30 (diff)
Add stub implementations of backend functions
Towards having actual trivial backends, but in general allows backends to not declare functions they don't care about which is nice and already a net reduction of actual code.
-rw-r--r--pugl/detail/mac_cairo.m20
-rw-r--r--pugl/detail/mac_gl.m17
-rw-r--r--pugl/detail/win_gl.c19
-rw-r--r--pugl/detail/x11_gl.c19
-rw-r--r--pugl/pugl_stub_backend.h103
5 files changed, 115 insertions, 63 deletions
diff --git a/pugl/detail/mac_cairo.m b/pugl/detail/mac_cairo.m
index 143fbb0..1e4149c 100644
--- a/pugl/detail/mac_cairo.m
+++ b/pugl/detail/mac_cairo.m
@@ -21,6 +21,7 @@
#include "pugl/detail/implementation.h"
#include "pugl/detail/mac.h"
#include "pugl/pugl_cairo_backend.h"
+#include "pugl/pugl_stub_backend.h"
#include <cairo-quartz.h>
@@ -62,12 +63,6 @@
@end
static PuglStatus
-puglMacCairoConfigure(PuglView* PUGL_UNUSED(view))
-{
- return PUGL_SUCCESS;
-}
-
-static PuglStatus
puglMacCairoCreate(PuglView* view)
{
PuglInternals* impl = view->impl;
@@ -141,15 +136,6 @@ puglMacCairoLeave(PuglView* view, bool drawing)
return PUGL_SUCCESS;
}
-static PuglStatus
-puglMacCairoResize(PuglView* PUGL_UNUSED(view),
- int PUGL_UNUSED(width),
- int PUGL_UNUSED(height))
-{
- // No need to resize, the surface is created for the drawing context
- return PUGL_SUCCESS;
-}
-
static void*
puglMacCairoGetContext(PuglView* view)
{
@@ -159,12 +145,12 @@ puglMacCairoGetContext(PuglView* view)
const PuglBackend* puglCairoBackend(void)
{
static const PuglBackend backend = {
- puglMacCairoConfigure,
+ puglStubConfigure,
puglMacCairoCreate,
puglMacCairoDestroy,
puglMacCairoEnter,
puglMacCairoLeave,
- puglMacCairoResize,
+ puglStubResize,
puglMacCairoGetContext
};
diff --git a/pugl/detail/mac_gl.m b/pugl/detail/mac_gl.m
index b84f799..6e3c1c6 100644
--- a/pugl/detail/mac_gl.m
+++ b/pugl/detail/mac_gl.m
@@ -21,6 +21,7 @@
#include "pugl/detail/implementation.h"
#include "pugl/detail/mac.h"
#include "pugl/pugl_gl_backend.h"
+#include "pugl/pugl_stub_backend.h"
#ifndef __MAC_10_10
#define NSOpenGLProfileVersion4_1Core NSOpenGLProfileVersion3_2Core
@@ -94,12 +95,6 @@ typedef NSUInteger NSWindowStyleMask;
@end
static PuglStatus
-puglMacGlConfigure(PuglView* PUGL_UNUSED(view))
-{
- return PUGL_SUCCESS;
-}
-
-static PuglStatus
puglMacGlCreate(PuglView* view)
{
PuglInternals* impl = view->impl;
@@ -164,22 +159,16 @@ puglMacGlResize(PuglView* view, int PUGL_UNUSED(width), int PUGL_UNUSED(height))
return PUGL_SUCCESS;
}
-static void*
-puglMacGlGetContext(PuglView* PUGL_UNUSED(view))
-{
- return NULL;
-}
-
const PuglBackend* puglGlBackend(void)
{
static const PuglBackend backend = {
- puglMacGlConfigure,
+ puglStubConfigure,
puglMacGlCreate,
puglMacGlDestroy,
puglMacGlEnter,
puglMacGlLeave,
puglMacGlResize,
- puglMacGlGetContext
+ puglStubGetContext
};
return &backend;
diff --git a/pugl/detail/win_gl.c b/pugl/detail/win_gl.c
index e8ecedc..d872303 100644
--- a/pugl/detail/win_gl.c
+++ b/pugl/detail/win_gl.c
@@ -21,6 +21,7 @@
#include "pugl/detail/types.h"
#include "pugl/detail/win.h"
#include "pugl/pugl_gl_backend.h"
+#include "pugl/pugl_stub_backend.h"
#include <windows.h>
@@ -272,20 +273,6 @@ puglWinGlLeave(PuglView* view, bool drawing)
return PUGL_SUCCESS;
}
-static PuglStatus
-puglWinGlResize(PuglView* PUGL_UNUSED(view),
- int PUGL_UNUSED(width),
- int PUGL_UNUSED(height))
-{
- return PUGL_SUCCESS;
-}
-
-static void*
-puglWinGlGetContext(PuglView* PUGL_UNUSED(view))
-{
- return NULL;
-}
-
PuglGlFunc
puglGetProcAddress(const char* name)
{
@@ -309,8 +296,8 @@ puglGlBackend()
puglWinGlDestroy,
puglWinGlEnter,
puglWinGlLeave,
- puglWinGlResize,
- puglWinGlGetContext
+ puglStubResize,
+ puglStubGetContext
};
return &backend;
diff --git a/pugl/detail/x11_gl.c b/pugl/detail/x11_gl.c
index f5dbe2c..ea34fc3 100644
--- a/pugl/detail/x11_gl.c
+++ b/pugl/detail/x11_gl.c
@@ -22,6 +22,7 @@
#include "pugl/detail/x11.h"
#include "pugl/pugl.h"
#include "pugl/pugl_gl_backend.h"
+#include "pugl/pugl_stub_backend.h"
#include <GL/gl.h>
#include <GL/glx.h>
@@ -188,20 +189,6 @@ puglX11GlLeave(PuglView* view, bool drawing)
return PUGL_SUCCESS;
}
-static PuglStatus
-puglX11GlResize(PuglView* PUGL_UNUSED(view),
- int PUGL_UNUSED(width),
- int PUGL_UNUSED(height))
-{
- return PUGL_SUCCESS;
-}
-
-static void*
-puglX11GlGetContext(PuglView* PUGL_UNUSED(view))
-{
- return NULL;
-}
-
PuglGlFunc
puglGetProcAddress(const char* name)
{
@@ -216,8 +203,8 @@ const PuglBackend* puglGlBackend(void)
puglX11GlDestroy,
puglX11GlEnter,
puglX11GlLeave,
- puglX11GlResize,
- puglX11GlGetContext
+ puglStubResize,
+ puglStubGetContext
};
return &backend;
diff --git a/pugl/pugl_stub_backend.h b/pugl/pugl_stub_backend.h
new file mode 100644
index 0000000..27a961b
--- /dev/null
+++ b/pugl/pugl_stub_backend.h
@@ -0,0 +1,103 @@
+/*
+ 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_backend.h Stub backend functions.
+*/
+
+#ifndef PUGL_STUB_BACKEND_H
+#define PUGL_STUB_BACKEND_H
+
+#include "pugl/pugl.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ @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_STUB_BACKEND_H