aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
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-01Add missing returnDavid Robillard1-0/+1
2020-11-01Cleanup: Fix typoDavid Robillard1-1/+1
2020-11-01Run clang-tidy on all headers and fix various issuesDavid Robillard10-10/+30
It's a nightmare trying to get this thing to check everything.
2020-11-01Make event handling in C++ more flexibleDavid Robillard4-141/+225
2020-11-01Reorder methods in C++ bindings to match C header groupsDavid Robillard1-6/+6
2020-11-01Add missing documentation for VulkanDavid Robillard1-1/+5
2020-10-31Use static polymorphism in C++ bindingsDavid Robillard6-290/+135
This removes virtual function overhead, and the weird situation of having to include pugl.ipp once (or worse, for pugl to provide a binary C++ library).
2020-10-31Make use of exceptions optionalDavid Robillard2-17/+39
2020-10-31Make most methods noexceptDavid Robillard1-34/+46
2020-10-31Remove use of cassert and type_traitsDavid Robillard1-39/+27
Losing assertions is unfortunate, but these slow down compile times, and in this case the scope of error is small enough that the risk is minimal.
2020-10-31Use a custom exception type for failed constructionDavid Robillard2-4/+24
This avoids an include of <exception>, which is slow, and is better practice anyway.
2020-10-31Remove pugl::ClockDavid Robillard1-46/+0
This is nice, but it bloats the header quite a bit for something that may not be used and requires the C++ standard library.
2020-10-31Remove use of std::unique_ptrDavid Robillard1-13/+17
Although it's generally a good idea to use known-solid std classes, in this case the wrapper is very simple so it's not worth including <memory>.
2020-10-31Cleanup: Remove unnecessary includeDavid Robillard1-1/+0
2020-10-31Cleanup: Remove unnecessary namespace qualificationsDavid Robillard2-27/+27
2020-10-31Fix Cairo build on Mac and WindowsDavid Robillard2-2/+2
2020-10-30Remove logging APIDavid Robillard6-129/+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-30Clean up installed man pagesDavid Robillard10-16/+16
2020-10-30Simplify header namesDavid Robillard39-78/+78
2020-10-30Remove GL and GLU wrapper headersDavid Robillard8-89/+30
Include them in pugl_gl.h instead, to simplify things and unclutter the include directory.
2020-10-30Make C++ bindings a separate packageDavid Robillard3-9/+40
2020-10-30Move C++ bindings to a separate directoryDavid Robillard9-4/+12
This seemed messy and potentially misleading for what is fundamentally a C++ library. It also makes it possible to set separate clang-tidy and clang-format settings for each to avoid "tainting" the C settings, though currently the headers use the same checks.
2020-10-30Move implementation source files to a conventional src directoryDavid Robillard24-79/+85
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.
2020-10-28Add Vulkan demosDavid Robillard6-0/+5421
2020-10-26Add Vulkan backendsDavid Robillard8-3/+839
2020-10-26Add missing includeDavid Robillard1-0/+1
2020-10-26Don't send expose events when window is minimizedDavid Robillard1-1/+5
2020-10-24Replace live resize with loop eventsDavid Robillard9-32/+90
This allows the application to control how recursive loops are handled rather than have Pugl impose behavior which can get in the way. For example, an application may not want to continuously animate while being resized, or set up its rendering differently in this situation. For example, with Vulkan, setting up a different swapchain can be necessary for smooth performance while live resizing on Windows, and Pugl has no ability to do this. I think it was a mistake to add this timer to Pugl itself, because it was always a bit of a leaky abstraction, and not very appropriate for a library that is supposed to be a thin abstraction layer. Though it almost seemed like things ran as usual while resizing on Windows and MacOS, the main event loop being stalled can be confusing, and there was no way to detect this. This way, applications must explicitly handle this situation and can implement the behavior they want without Pugl getting in the way. This also simplifies the Pugl implementation a bit, which is always nice.
2020-10-24Remove unused Doxygen configuration keysDavid Robillard1-40/+0
These are relatively new and cause warnings on older systems.
2020-10-24Fix documentation typoDavid Robillard1-1/+1
2020-10-24Use single-line doc comments where possibleDavid Robillard1-90/+30
2020-10-22Resurrect puglEnterContext() and puglLeaveContext()David Robillard2-49/+34
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.
2020-10-21Add noexcept annotations to C++ Wrapper base classDavid Robillard1-6/+6
2020-10-21Add timer methods to C++ wrapperDavid Robillard1-0/+12
2020-10-21Make backend function wrappers noexceptDavid Robillard3-4/+4
2020-10-21Fix shader demo arguments to allow running at maximum framerateDavid Robillard1-2/+3
2020-10-21Check all implementation files with IWYUDavid Robillard1-2/+6
2020-10-21Simplify documentation structureDavid Robillard6-61/+43
2020-10-21Simplify documentation styleDavid Robillard1-9/+2
2020-10-21Fix outdated function reference in Cairo documentationDavid Robillard1-1/+1
2020-10-21Cleanup: Always put return types on their own lineDavid Robillard5-13/+26
2020-10-21Cleanup: Sort includesDavid Robillard1-1/+2
2020-10-21Cleanup: Use conventional style for ObjC methodsDavid Robillard5-67/+66
2020-10-21Cleanup: Use consistent style for preprocessor conditionalsDavid Robillard2-3/+3
2020-10-21Fix clang-tidy issues in Windows codeDavid Robillard4-34/+28
2020-10-21Fix building with clang on WindowsDavid Robillard2-2/+7
2020-10-21Add no-cxx configure optionDavid Robillard1-4/+6
2020-10-21Fix Cairo backend compilation on WindowsDavid Robillard1-1/+2