aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2021-05-24Separate stub backends from other backendsDavid Robillard11-183/+217
Stub backends were a dependency of other backends to allow some code reuse. However, that can cause conflicting symbols if multiple backends are linked into the same binary, which should be possible. To avoid this, move the shared code into the platform implementation, and export those symbols so that backends can use them. This adds some semi-public platform-specific API that can only be used by backends included with pugl. They are undocumented, subject to change at any time without a corresponding version change, and may not be used by third parties (for example by custom backends in an application).
2021-05-24Fix the declaration of WGL function typesJean Pierre Cimalando1-4/+10
2021-05-14Remove redundant conditionalRichard Gill1-5/+1
2021-05-08Send unmap/map events when the view is minimized/restoredDavid Robillard5-33/+139
X11 Window managers set WM_STATE to notify about minimization, often without sending core X visibility events (which seems odd to me, but that's what Gnome does anyway). So, implement this protocol and send map/unmap events to the view, and adjust the Windows implementation to do the same for consistency across all platforms.
2021-05-08X11: Always send an initial configure before mapDavid Robillard1-1/+1
I think the conditional here was because this is typical when the view is embedded, but window manager behaviour is all over the place and this is something we want to always guarantee.
2021-05-08X11: Factor out translateClientMessage()David Robillard1-12/+21
2021-05-06Strengthen clang-tidy warningsDavid Robillard2-3/+1
2021-05-06Clean up X11 implementationDavid Robillard2-153/+113
2021-05-06Add basic test for Vulkan supportDavid Robillard1-5/+2
2021-05-06Add test for copy/pasteDavid Robillard1-5/+4
2021-05-03Clean up includes and add mappings for old versions of IWYUDavid Robillard1-0/+2
2021-05-03MacOS: Make puglGetNativeWorld() return the NSApplicationDavid Robillard1-2/+2
2021-05-03Shrink puglGetViewHint() implementationDavid Robillard1-5/+1
2021-05-03Fix crash when freeing a view that has not been configuredDavid Robillard2-4/+14
2021-05-03Fix questionable event castsDavid Robillard3-29/+66
I don't think there is any UB actually happening here, but some of these were casting to a pointer of a larger type, which is problematic. Unfortunately, it makes for quite a bit of tedious verbosity, but I don't see a decent way around that in C99.
2021-04-21MacOS: Fix memory leaks in puglUpdate()Bjarke Bech1-24/+26
2021-01-28Fix size hints on X11David Robillard1-3/+6
2021-01-28Fix puglSetMaxSize() on X11David Robillard1-2/+2
2021-01-25Fix warnings when compiling for X11 as C++David Robillard1-2/+6
2021-01-02Avoid "else" after "return"David Robillard3-9/+18
2021-01-02Use email address instead of website for attributionDavid Robillard3-3/+3
2021-01-02Clean up includesDavid Robillard2-1/+2
2021-01-02Simplify clang-format configuration and format all codeDavid Robillard21-4018/+4074
2020-12-11Fix a conversion warning with MinGWDavid Robillard1-1/+2
2020-12-01Make puglShow() realize automatically on Windows and MacOSDavid Robillard2-0/+14
2020-11-26Remove file documentationDavid Robillard20-97/+0
These will not be used in the Sphinx documentation, and most were self-explanatory and only there to make the Doxygen index look nice anyway. Where there was actually useful information, it has been preserved as regular comments.
2020-11-25Rename puglShowWindow and puglHideWindow to puglShow an puglHideDavid Robillard4-6/+18
These names were confusing because a view is not necessarily a window. Since there's no room for ambiguity here, simply drop the superfluous word.
2020-11-25Move puglEnterContext and puglLeaveContext to GL backendsDavid Robillard4-12/+36
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.
2020-11-25Pass vkGetInstanceProcAddr to puglCreateSurface instead of a loaderDavid Robillard3-9/+9
This allows puglCreateSurface() to be used with some other loader, or when linking to Vulkan at compile time.
2020-11-22Suppress various clang-tidy warningsDavid Robillard1-0/+5
These libc-specific warnings are a new level, even for LLVM. Using an opt-out style for this is probably not going to last.
2020-11-22X11: Fix position of child windows and clean up window creation codeDavid Robillard1-50/+68
This fixes an issue where the default frame position would be set based on the screen size for child windows. This went unnoticed so far because most plugins, like pugl_embed_demo, explicitly set the frame and so avoided this code path. Also generally tidy up puglRealize() along the way to make it a bit more readable.
2020-11-10Fix asan errors on X11David Robillard1-12/+10
Fun with union punning. The different sizes mean that stuff on the stack could be copied to the destination event. I don't think this would cause a concrete issue (the contents of the event past the expose are irrelevant) but asan quite reasonably has a problem with it.
2020-11-01Run clang-tidy on all headers and fix various issuesDavid Robillard2-3/+5
It's a nightmare trying to get this thing to check everything.
2020-10-31Cleanup: Remove unnecessary includeDavid Robillard1-1/+0
2020-10-31Fix Cairo build on Mac and WindowsDavid Robillard2-2/+2
2020-10-30Remove logging APIDavid Robillard4-70/+5
This was missing from the C++ bindings and barely used anyway, so just remove it for now in the interests of simplicity and finalizing a stable API. The information previously logged in the X11 GL backend is now available programatically, so applications can print the same information portably if they like.
2020-10-30Simplify header namesDavid Robillard11-13/+13
2020-10-30Move implementation source files to a conventional src directoryDavid Robillard23-0/+7013
I think this attempt to be optionally header-only was misguided, particularly installing source code to the system include path. Typically anyone vendoring code just includes the repository and builds from there anyway. This commit moves all the implementation code to a typical src directory (Don't Be Weird). I still think there is some value in simple "inline" deployment, but that would be better achieved another way, like producing a single-file amalgamation that builds anywhere, ala sqlite.