Age | Commit message (Collapse) | Author | Files | Lines |
|
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).
|
|
|
|
Include them in pugl_gl.h instead, to simplify things and unclutter the include
directory.
|
|
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.
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
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).
|
|
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...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Not really sure why I used a web link here (maybe because it's more stable),
but this is more conventional.
|
|
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.
|
|
This happens on MacOS.
|
|
Compilers are allowed to choose signed or unsigned for enums, and apparently
gcc and c++ make different choices.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
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).
|
|
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.
|
|
|
|
|
|
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.
|
|
|
|
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
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|