Age | Commit message (Collapse) | Author | Files | Lines |
|
This uses a similar approach to Gtk, where surfaces are created every draw
call. It is a bit slower for a single application in most cases, but uses less
memory when drawing isn't happening and plays more nicely with other views or
applications.
|
|
This is needed for clipping. Unfortunately, the puglEnterContext() and
puglLeaveContext() API was not suitable for this, but this shouldn't matter in
user code because it is only used for setup, and is slated for removal anyway.
Instead, just call the backend functions directly in the implementation.
|
|
Cairo has a built-in cache that makes this fast enough to not matter, and it
removes some state which is always good.
|
|
Working on Vulkan clarified what has always been slightly smelly about the
design and organization here: not everything that is API specific is really in
a "backend" (a PuglBackend). The concrete example is puglGetProcAddress(),
which only makes sense for GL and is actually implemented in the "backend"
files. Arguably puglGetContext() is also such a thing.
So, rename the headers so they can be the place where API-specific things go in
general, which happens to include a backend most of the time. The stub is a
bit of an exception to this, but whatever. The includes look tidier this way.
In place of the old headers are compatibility stubs that just emit a warning
and include the new version, which will be maintained for a while.
|
|
This allows backends which use basic software rendering (like Cairo) to share
the common basic window format setup code.
|
|
|
|
|
|
|
|
Also save and restore cairo context state around callbacks, so applications
don't need to worry about smashing cairo state across exposures.
|
|
|
|
Taking a page from C++ convention, where "detail" is for things that should not
be included in user code.
|