aboutsummaryrefslogtreecommitdiffstats
path: root/pugl/detail/types.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-07-22 16:30:53 +0200
committerDavid Robillard <d@drobilla.net>2019-09-03 08:32:16 +0200
commite83c2b421d140244a6b9edb051b3e0d4aacda332 (patch)
tree398e49f43c96f4602496874fa7b3680236138720 /pugl/detail/types.h
parent5081d49f9f08596c07a8ed32430a4fa3e1baf352 (diff)
downloadpugl-e83c2b421d140244a6b9edb051b3e0d4aacda332.tar.gz
pugl-e83c2b421d140244a6b9edb051b3e0d4aacda332.tar.bz2
pugl-e83c2b421d140244a6b9edb051b3e0d4aacda332.zip
Add PuglWorld
The old API was broken for programs that manage multiple views, since it was impossible to wait for events on any view. There are also several functions in the API which are not actually associated with views at all, so those can now be moved to the more appropriate PuglWorld to make this more clear. The old puglInit() and puglDestroy() functions are preserved for compatibility, but marked as deprecated.
Diffstat (limited to 'pugl/detail/types.h')
-rw-r--r--pugl/detail/types.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/pugl/detail/types.h b/pugl/detail/types.h
index b538091..fdfb0f6 100644
--- a/pugl/detail/types.h
+++ b/pugl/detail/types.h
@@ -24,6 +24,7 @@
#include "pugl/pugl.h"
#include <stdbool.h>
+#include <stddef.h>
#include <stdint.h>
// Unused parameter macro to suppresses warnings and make it impossible to use
@@ -35,7 +36,10 @@
# define PUGL_UNUSED(name)
#endif
-/** Platform-specific internals. */
+/** Platform-specific world internals. */
+typedef struct PuglWorldInternalsImpl PuglWorldInternals;
+
+/** Platform-specific view internals. */
typedef struct PuglInternalsImpl PuglInternals;
/** View hints. */
@@ -43,6 +47,7 @@ typedef int PuglHints[PUGL_NUM_WINDOW_HINTS];
/** Cross-platform view definition. */
struct PuglViewImpl {
+ PuglWorld* world;
const PuglBackend* backend;
PuglInternals* impl;
PuglHandle handle;
@@ -63,6 +68,13 @@ struct PuglViewImpl {
bool visible;
};
+/** Cross-platform world definition. */
+struct PuglWorldImpl {
+ PuglWorldInternals* impl;
+ size_t numViews;
+ PuglView** views;
+};
+
/** Opaque surface used by graphics backend. */
typedef void PuglSurface;