aboutsummaryrefslogtreecommitdiffstats
path: root/test
AgeCommit message (Collapse)AuthorFilesLines
2021-01-02Clean up includesDavid Robillard1-0/+1
2021-01-02Simplify clang-format configuration and format all codeDavid Robillard11-792/+790
2020-12-01Add clipboard testDavid Robillard1-0/+104
2020-11-25Rename puglShowWindow and puglHideWindow to puglShow an puglHideDavid Robillard4-5/+5
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-22Suppress various clang-tidy warningsDavid Robillard1-0/+4
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-10-31Use static polymorphism in C++ bindingsDavid Robillard1-1/+0
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-30Simplify header namesDavid Robillard9-17/+17
2020-10-30Remove GL and GLU wrapper headersDavid Robillard2-4/+0
Include them in pugl_gl.h instead, to simplify things and unclutter the include directory.
2020-10-24Replace live resize with loop eventsDavid Robillard1-2/+6
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-21Fix clang-tidy issues in Windows codeDavid Robillard1-1/+1
2020-10-21Use separate clang-tidy configurations in different directoriesDavid Robillard1-0/+10
This allows more fine-grained control. In particular, it prevents mistaked from creeping in to the public headers or core implementation because of warnings that are disabled for the tests and examples. This keeps the code that is used in other projects as clean as possible.
2020-10-21Add missing include guardsDavid Robillard1-0/+5
2020-10-19Gracefully handle puglRealize() being called twiceDavid Robillard1-0/+100
2020-10-14Suppress IWYU warnings in build testsDavid Robillard2-14/+14
2020-10-04Add refresh rate hintDavid Robillard3-0/+6
2020-10-04Print all view hints in shader demo and hint testsDavid Robillard3-0/+55
2020-10-04Add puglGetViewHint()David Robillard2-0/+163
This allows retrieving properties of the view that may be needed, such as the actual bit depth (which may vary from the suggested depth provided as a hint).
2020-07-05Improve struct packingDavid Robillard4-12/+12
Unfortunately there is no warning like Wpadded but only for internal padding, so that can't be turned on, but if there was, after this commit the build would be clean with it. Maybe some day...
2020-07-05Ensure that all API headers are warning-freeDavid Robillard2-0/+70
2020-07-05Add scroll direction fieldDavid Robillard1-1/+21
2020-07-05Print crossing mode of enter and leave eventsDavid Robillard1-4/+6
2020-07-05Replace grab flag in PuglEventFocus with crossing modeDavid Robillard1-4/+19
2020-07-02Fix cast alignment warnings on 32-bit ARMDavid Robillard1-2/+4
2020-05-16Add default and maximum sizeDavid Robillard4-0/+4
2020-05-16Use email address in copyright headersDavid Robillard5-5/+5
Not really sure why I used a web link here (maybe because it's more stable), but this is more conventional.
2020-05-16Fix redisplay test on MacOSDavid Robillard1-3/+9
This does two things: posts the redisplay when an update event is received (which is correct pattern for this now), and uses larger even numbers for the redisplay region so they make it through the pixel/point conversion process without loss.
2020-05-16Make show/hide test tolerant to multiple exposuresDavid Robillard1-1/+1
This happens on MacOS.
2020-04-04Fix mismatched printf parameter warningDavid Robillard1-2/+1
Compilers are allowed to choose signed or unsigned for enums, and apparently gcc and c++ make different choices.
2020-04-01Replace puglShowWindow() with puglRealize()David Robillard4-4/+4
2020-03-31Add format attribute to logError()David Robillard1-1/+8
2020-03-31Fix mismatched printf parameter typesDavid Robillard1-2/+2
2020-03-17Use clearer names for pointer eventsDavid Robillard1-3/+3
These old "notify" names are a smell from X11 which is a bit strange and inconsistent here, since nearly everything is a "notification" of sorts. I think the new names here are much more clear since they are consistent with the keyboard focus events.
2020-03-16Cleanup: Add missing includesDavid Robillard1-0/+2
2020-03-16Add timer eventsDavid Robillard2-0/+160
2020-03-16Make update test more tolerantDavid Robillard1-1/+1
2020-03-15Cleanup: Fix stale commentDavid Robillard1-2/+2
2020-03-15Unify event loop functions as puglUpdate()David Robillard4-14/+137
The previous separation between polling and dispatching was a lie, especially on MacOS where it is impossible to only poll for events without dispatching anything. Providing such an API is misleading, and problematic in various other ways. So, merge them into a single puglUpdate() function which can do the right thing on all platforms. This also adds the behaviour of actually processing all events in the given time interval, which is almost always what clients actually want to do when using a positive timeout (naively doing this before caused terrible input lag).
2020-03-15Add type and flags to worldDavid Robillard2-2/+2
Unfortunately this is an API break, but there's no reasonable way to deprecate the old function and this is required for things to work correctly. The type will be used in following commits to tick the main loop and dispatch events correctly for either case.
2020-03-15Cleanup: Fix indentationDavid Robillard1-3/+3
2020-03-09Add test for redisplays posted in the event loopDavid Robillard1-0/+133
2020-03-09Add PuglEventClient and puglSendEvent()David Robillard1-0/+8
This event makes it possible to send an arbitrary event to a view, which is useful for many things. In particular, this method of communication with views will wake up the event loop, unlike hacks in applications that share data in some other way.
2020-03-09Add test for basic view creation, exposure, and destructionDavid Robillard1-0/+149
2020-03-09Add create, destroy, map, and unmap eventsDavid Robillard1-0/+8
These can be used to do things when a view is created or destroyed, in particular set up the GL context in a more controlled way. Map and unmap events are also added for when views are shown and hidden so application can react to this as well. Towards the deprecation of puglEnterContext() and puglLeaveContext(), which are prone to abuse. squash! Remove client event stuff
2020-03-08Enable double buffering by defaultDavid Robillard1-3/+3
2020-03-08Add vsync command line options to demosDavid Robillard1-2/+19
2020-03-08Move demo programs to examples directoryDavid Robillard9-4950/+0
These are not really tests, but examples or demos, which has caused some confusion in the past. So, move them, and make room for actual tests.
2020-03-08Split graphical utilities out from test_utils.hDavid Robillard5-149/+174
2020-03-08Print when unknown events are received in testsDavid Robillard1-0/+3
2020-03-08Cleanup: Fix some conversion warningsDavid Robillard1-7/+7
2020-03-07Test: Don't reuse cube vertices for backgroundDavid Robillard1-3/+10
This was pretty confusing since it looked like the parent view was drawing the cube as well, and inefficient since only a single rect needs to be drawn here.