mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-27 14:10:30 +00:00
fc4d36e50a
If we are double buffering surfaces with IOSurface then we need to copy the area that was damaged in the previous frame to the back buffer. This can be done with IOSurface but we need to hold the read-only lock so that we don't cause the underlying IOSurface contents to be invalidated. Additionally, since this is only used in the context of rendering to a GdkMacosSurface, we know the life-time of the cairo_surface_t and can simply lock/unlock the IOSurface buffer from begin_frame/end_frame to have the buffer flushing semantics we want. To ensure that we don't over damage, we store the damage in begin_frame (and copy it) and then subtract it from the next frames damage to determine the smallest amount we need to copy (taking scale factor into account). We don't care to modify the damage region to swapBuffers because they already have the right contents and could potentially fall into another tile anyway and we'd like to avoid damaging that. Fixes #4735 |
||
---|---|---|
.. | ||
edgesnapping.c | ||
edgesnapping.h | ||
gdkdisplaylinksource.c | ||
gdkdisplaylinksource.h | ||
gdkmacos.h | ||
GdkMacosBaseView.c | ||
GdkMacosBaseView.h | ||
gdkmacosbuffer-private.h | ||
gdkmacosbuffer.c | ||
gdkmacoscairocontext-private.h | ||
gdkmacoscairocontext.c | ||
gdkmacosclipboard-private.h | ||
gdkmacosclipboard.c | ||
gdkmacoscursor-private.h | ||
gdkmacoscursor.c | ||
gdkmacosdevice-private.h | ||
gdkmacosdevice.c | ||
gdkmacosdevice.h | ||
gdkmacosdisplay-feedback.c | ||
gdkmacosdisplay-private.h | ||
gdkmacosdisplay-settings.c | ||
gdkmacosdisplay-translate.c | ||
gdkmacosdisplay-wm.c | ||
gdkmacosdisplay.c | ||
gdkmacosdisplay.h | ||
gdkmacosdrag-private.h | ||
gdkmacosdrag.c | ||
gdkmacosdragsurface-private.h | ||
gdkmacosdragsurface.c | ||
gdkmacosdrop-private.h | ||
gdkmacosdrop.c | ||
gdkmacoseventsource-private.h | ||
gdkmacoseventsource.c | ||
gdkmacosglcontext-private.h | ||
gdkmacosglcontext.c | ||
gdkmacosglcontext.h | ||
gdkmacoskeymap-private.h | ||
gdkmacoskeymap.c | ||
gdkmacoskeymap.h | ||
GdkMacosLayer.c | ||
GdkMacosLayer.h | ||
gdkmacosmonitor-private.h | ||
gdkmacosmonitor.c | ||
gdkmacosmonitor.h | ||
gdkmacospopupsurface-private.h | ||
gdkmacospopupsurface.c | ||
gdkmacosseat-private.h | ||
gdkmacosseat.c | ||
gdkmacosseat.h | ||
gdkmacossurface-private.h | ||
gdkmacossurface.c | ||
gdkmacossurface.h | ||
GdkMacosTile.c | ||
GdkMacosTile.h | ||
gdkmacostoplevelsurface-private.h | ||
gdkmacostoplevelsurface.c | ||
gdkmacosutils-private.h | ||
GdkMacosView.c | ||
GdkMacosView.h | ||
GdkMacosWindow.c | ||
GdkMacosWindow.h | ||
meson.build |