| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
This is a special case for quartz where we want to ensure that a
CGLayer is used for the pixel cache. create_similar_surface() is not
enough since only a few CGLayer backed surfaces seem possible
before we can’t create them anymore.
This requires cairo-quartz patches for
cairo_quartz_surface_create_cg_layer()
|
|
|
|
|
|
|
|
|
|
| |
Using the default RGB colorspace seems to go through colorspace
conversion on tested macbook retina devices. Instead, default to the
colorspace of the main display so that it does not incur the conversion
cost on every frame.
This probably requires the equivalent patch to cairo, I have not tested
without it yet.
|
|
|
|
|
| |
Rather than performing the list iteration and the list free as separate
steps, free the list link while iterating.
|
|
|
|
|
|
| |
Now that we have a frame clock in place, we should be able to drop
the beam-sync penalty prevention code as we should be aligning our
draws with CVDisplayLink.
|
| |
|
| |
|
|
|
|
| |
We don’t care about the other enums, fine to squash the warning.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This uses CVDisplayLink to drive the GdkFrameClock. A GdkWindow
can register a frame callback to thaw their frame clock as necessary
based on the next notification from CVDisplayLink.
CVDisplayLink notifies us on a high-priority thread. We use the same
NSEventas gdkeventloop-quartz.c to wakeup the main loop. This is done
so that we don’t pathologically wake up the select thread to then
continue notifying the main loop.
We use an embedded GList node in the GdkWindowImplQuartz so that we
can avoid allocating any lists or arrays for pending frame callbacks.
Compare this to the same design in GdkWindow for children.
|
|
|
|
|
|
| |
Load a hi-dpi icon when we are running with scale=2.
https://bugzilla.gnome.org/show_bug.cgi?id=751787
|
|
|
|
|
| |
This is a testcase for
https://bugzilla.gnome.org/show_bug.cgi?id=755675
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=755528
|
|
|
|
|
| |
This might be the cause for some crashes, like
https://bugzilla.redhat.com/show_bug.cgi?id=1264558
|
|
|
|
|
| |
These are used for every signal emission, so we should
make them as fast as we can.
|
|
|
|
|
|
| |
We are only ever drawing axis-aligned quarter arcs here. By caching
these paths, sincos drops from the profiles for drawing-heavy
workloads.
|
|
|
|
|
|
| |
We were calling gtk_container_should_propagate_draw
twice for each child. We can avoid this by splitting
out an gtk_container_propagate_draw_internal function.
|
|
|
|
|
|
|
| |
Almost all callers of _gtk_widget_draw already did their own
cairo_save/restore, so drop the save/restore calls inside
_gtk_widget_draw and instead fix the last caller, gtk_widget_draw,
to do the same.
|
|
|
|
| |
Move the cairo_save call to where it is needed.
|
|
|
|
|
| |
This was introduced in 2d9c09d6 alongside a private setter, but that
setter has been removed and the field is always TRUE.
|
|
|
|
|
|
|
|
|
| |
Call gtk_popover_update_position instead which will pick up the new
transition_diff value and pass it on to
_gtk_window_set_popover_position, which in turn will move the window
correctly.
https://bugzilla.gnome.org/show_bug.cgi?id=755435
|
|
|
|
|
|
|
|
|
|
| |
Check whether the given popover even changed size in
_gtk_window_set_popover_position. If not, just move its GdkWindow
without calling gtk_widget_queue_resize. Using popover_get_rect here is
still relatively costly, but popover_size_allocate would be doing that
anyway.
https://bugzilla.gnome.org/show_bug.cgi?id=755435
|
|
|
|
|
|
| |
It's only used once and removing it only adds a single line there.
https://bugzilla.gnome.org/show_bug.cgi?id=755435
|
| |
|
| |
|
|
|
|
|
|
| |
The signal expects a return value, so give it one.
https://bugzilla.gnome.org/show_bug.cgi?id=755692
|
|
|
|
|
| |
This avoids allocating a temporary bitmask, and lets us
avoid some value comparisons altogether.
|
| |
|
|
|
|
|
| |
This function is called very frequently during in GTK+'s drawing
paths, and thus should not carry unexpected costs.
|
|
|
|
| |
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
We want to use the same type everywhere to avoid surprises.
|
|
|
|
|
|
|
| |
This looks like an oversight from "quickly testing a potential fix" and
then forgetting to make a production-ready when it works.
https://bugzilla.gnome.org/show_bug.cgi?id=755691
|
| |
|
|
|
|
|
|
|
|
| |
We can use gdk_window_peek_children here, instead of copying
the list. Note that we preserve the bottom-to-top ordering by
iterating the list from the end.
gdk_window_get_children_with_user_data was doing a list
reversal while filtering the list.
|
|
|
|
| |
Avoid copying the child window lists. It is not necessary.
|
|
|
|
|
|
| |
Instead of constructing a single list of all windows associated
to a widget, just iterate the children lists recursively, avoiding
allocations.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
In case some client send to us a non valid utf8 string, don't screw up
the bookmarks file and just return.
https://bugzilla.gnome.org/show_bug.cgi?id=755215
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The string we were using is the representation of the internal text
in the popover entry. However that can be freed before setting the
bookmark label, if i.e. the row is destroyed and therefore the popover
as well.
To avoid that, duplicate the label in a local variable.
One of the consequences is that for those people using development version
we migth screwed its bookmarks file, since the bookmark manager wrote
garbage from the already freed label.
https://bugzilla.gnome.org/show_bug.cgi?id=755215
|
|
|
|
|
|
|
|
| |
Update the notes that this is also used for Visual Studio 2015 support,
and correct the MSVC_VER_LONG for MSVC 2015, which is 14, not 2015.
Also add a note that this can be used for other projects that have
Visual Studio build support.
|
|
|
|
|
| |
Handle also the situation where $(srcdir) == $(top_srcdir), so that this
can also be used in cases like librsvg and gobject-introspection.
|