gtk/gdk
Jasper St. Pierre d48adf9cee gdkwindow: Remove the internal cairo_surface used for out-of-band painting
Traditionally, the way painting was done in GTK+ was with the
"expose-event" handler, where you'd use GDK methods to do drawing on
your surface. In GTK+ 2.24, we added cairo support with gdk_cairo_create,
so you could paint your graphics with cairo.

Since then, we've added client-side windows, double buffering, the paint
clock, and various other enhancements, and the modern way to do drawing
is to connect to the "draw" signal on GtkWidget, which hands you a
cairo_t. To do double-buffering, the cairo_t we hand you is actually on
a secret surface, not the actual backing store of the window, and when
the draw handler completes we blit it into the main backing store
atomically.

The code to do this is with the APIs gdk_window_begin_paint_region,
which creates the temporary surface, and gdk_window_end_paint which
blits it back into the backing store. GTK+'s implementation of the
"draw" signal uses these APIs.

We've always sort-of supported people calling gdk_cairo_create
"outside" of a begin_paint / end_paint like old times, but then you're
not getting the benefit of double-buffering, and it's harder for GDK to
optimize.

Additionally, newer backends like Mir and Wayland can't actually support
this model, since they're based on double-buffering and swapping buffers
at various points in time. If we hand you a random cairo_t, we have no
idea when is a good time to swap.

Remove support for this.

This is technically a GDK API break: a warning is added in cases where
gdk_cairo_create is called outside of a paint cycle, and the returned
surface is a dummy that won't ever be composited back onto the main
surface. Testing with complex applications like Ardour didn't produce
any warnings.
2014-06-20 20:41:54 -04:00
..
broadway gdkwindow: Remove the internal cairo_surface used for out-of-band painting 2014-06-20 20:41:54 -04:00
deprecated Deprecate GdkColor 2014-05-22 09:09:55 -04:00
quartz gdkwindow: Remove the internal cairo_surface used for out-of-band painting 2014-06-20 20:41:54 -04:00
wayland gdkwindow: Remove the internal cairo_surface used for out-of-band painting 2014-06-20 20:41:54 -04:00
win32 gdkwindow: Remove the internal cairo_surface used for out-of-band painting 2014-06-20 20:41:54 -04:00
x11 gdkwindow: Remove the internal cairo_surface used for out-of-band painting 2014-06-20 20:41:54 -04:00
COPYING Change FSF Address 2012-02-27 17:06:11 +00:00
fallback-c89.c gdk/fallback-c89.c: Add fallback for round() 2013-03-13 13:22:46 +08:00
gdk.c gdk: add many missing (nullable) return value annotations 2014-05-11 11:48:32 -04:00
gdk.h Deprecate GdkColor 2014-05-22 09:09:55 -04:00
gdkapplaunchcontext.c docs: replace all <examples> with markdown headings 2014-02-04 16:58:54 -05:00
gdkapplaunchcontext.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkapplaunchcontextprivate.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkcairo.c gdk_cairo_surface_create_from_pixbuf: Add missing (allow-none) annotation 2014-03-12 11:50:55 -04:00
gdkcairo.h Deprecate GdkColor 2014-05-22 09:09:55 -04:00
gdkconfig.h.win32 Clean up the pre-configured gdkconfig.h.win32 2013-05-28 13:04:37 +08:00
gdkconfig.h.win32_broadway Add Visual Studio Build Support for Broadway 2013-08-02 11:20:19 +08:00
gdkcursor.c gdk: assorted introspection and documentation fixes 2014-05-19 11:47:59 -07:00
gdkcursor.h Drop GDK_MULTIHEAD_SAFE 2014-06-11 21:55:15 -04:00
gdkcursorprivate.h gdk: Add gdk_cursor_get_surface() 2013-08-07 13:34:10 +02:00
gdkdeprecated.c docs: use Returns: consistently 2014-02-19 18:56:05 -05:00
gdkdevice.c GdkDevice: Use G_PARAM_EXPLICIT_NOTIFY 2014-06-09 13:30:53 -04:00
gdkdevice.h Use GDK's current window tracking when synthesizing events in GTK+ 2014-03-12 23:03:53 -04:00
gdkdevicemanager.c gdk: add many missing (nullable) return value annotations 2014-05-11 11:48:32 -04:00
gdkdevicemanager.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkdevicemanagerprivate.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkdeviceprivate.h gdk: Convert mouse position to doubles, add new getters 2013-07-03 14:39:25 +02:00
gdkdisplay.c gdk: add many missing (nullable) return value annotations 2014-05-11 11:48:32 -04:00
gdkdisplay.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkdisplaymanager.c gdk: assorted introspection and documentation fixes 2014-05-19 11:47:59 -07:00
gdkdisplaymanager.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkdisplaymanagerprivate.h gdk: Unvfuncify gdk_display_manager_open_display() 2013-04-19 16:23:43 -04:00
gdkdisplayprivate.h GdkDisplay: Remove unused GdkKeyboardGrabInfo struct 2014-06-11 08:30:04 +12:00
gdkdnd.c gdk: assorted introspection and documentation fixes 2014-05-19 11:47:59 -07:00
gdkdnd.h docs: use apostrophes in *n't 2014-02-07 13:32:47 -05:00
gdkdndprivate.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkenumtypes.c.template Include config.h in gdkenumtypes.c.template 2013-03-15 09:19:35 -04:00
gdkenumtypes.h.template Use GDK_AVAILABLE_IN_ALL for generated enum types 2013-05-05 15:38:46 -04:00
gdkevents.c Drop GDK_MULTIHEAD_SAFE 2014-06-11 21:55:15 -04:00
gdkevents.h Drop GDK_MULTIHEAD_SAFE 2014-06-11 21:55:15 -04:00
gdkframeclock.c gdk: add many missing (nullable) return value annotations 2014-05-11 11:48:32 -04:00
gdkframeclock.h docs: fix typo in type name 2014-01-20 18:27:28 -05:00
gdkframeclockidle.c Changed obsolete FSF portal addresses to web address 2014-01-12 19:56:49 +07:00
gdkframeclockidle.h Changed obsolete FSF portal addresses to web address 2014-01-12 19:56:49 +07:00
gdkframeclockprivate.h docs: add docs for GtkFrameClock 2014-01-20 18:27:28 -05:00
gdkframetimings.c docs: use proper apostrophe 2014-02-07 13:06:10 -05:00
gdkframetimings.h GdkFrameTimings: add documentation 2013-02-14 17:19:52 -05:00
gdkglobals.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkinternals.h gdkwindow: Remove the internal cairo_surface used for out-of-band painting 2014-06-20 20:41:54 -04:00
gdkintl.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkkeynames.c Keep XF86 keysym names working 2013-04-19 20:11:39 -04:00
gdkkeys.c gdk: add many missing (nullable) return value annotations 2014-05-11 11:48:32 -04:00
gdkkeys.h Drop GDK_MULTIHEAD_SAFE 2014-06-11 21:55:15 -04:00
gdkkeysprivate.h gdk: Refactor gdk_keyval_convert_case() 2013-04-16 15:30:14 +02:00
gdkkeysyms-compat.h Update gdkkeysyms.h header 2013-04-19 20:11:38 -04:00
gdkkeysyms-update.pl gdkkeysyms-update: Remove workarounds for old bugs 2013-07-17 16:40:05 -04:00
gdkkeysyms.h Update gdkkeysyms.h header 2013-04-19 20:11:38 -04:00
gdkkeyuni.c docs: use Returns: consistently 2014-02-19 18:56:05 -05:00
gdkmain.h Drop GDK_MULTIHEAD_SAFE 2014-06-11 21:55:15 -04:00
gdkmarshalers.list Bug 631599 - Allow to use arbitrary surfaces for offscreen windows 2010-10-14 13:25:23 +02:00
gdkoffscreenwindow.c gdkwindow: Remove the internal cairo_surface used for out-of-band painting 2014-06-20 20:41:54 -04:00
gdkpango.c docs: Another round of markup removal 2014-03-29 00:24:15 -04:00
gdkpango.h Drop GDK_MULTIHEAD_SAFE 2014-06-11 21:55:15 -04:00
gdkpixbuf-drawable.c Forgotten file 2014-05-22 09:31:15 -04:00
gdkpixbuf.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkprivate.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkproperty.c docs: use apostrophes in *n't 2014-02-07 13:32:47 -05:00
gdkproperty.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkrectangle.c docs: use proper apostrophe 2014-02-07 13:06:10 -05:00
gdkrectangle.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkrgba.c docs: use Returns: consistently 2014-02-19 18:56:05 -05:00
gdkrgba.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkscreen.c gdk: assorted introspection and documentation fixes 2014-05-19 11:47:59 -07:00
gdkscreen.h Revert "Introduce API to get the preferred visual" 2014-02-10 22:15:28 -05:00
gdkscreenprivate.h Revert "Introduce API to get the preferred visual" 2014-02-10 22:15:28 -05:00
gdkselection.c gdk: assorted introspection and documentation fixes 2014-05-19 11:47:59 -07:00
gdkselection.h Drop GDK_MULTIHEAD_SAFE 2014-06-11 21:55:15 -04:00
gdktestutils.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkthreads.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdktypes.h Docs: remove some leftover markup 2014-03-28 23:51:52 -04:00
gdkversionmacros.h.in Add GDK_VERSION_3_14 2014-04-23 23:25:07 -04:00
gdkvisual.c gdk: add many missing (nullable) return value annotations 2014-05-11 11:48:32 -04:00
gdkvisual.h Drop GDK_MULTIHEAD_SAFE 2014-06-11 21:55:15 -04:00
gdkvisualprivate.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkwindow.c gdkwindow: Remove the internal cairo_surface used for out-of-band painting 2014-06-20 20:41:54 -04:00
gdkwindow.h gdkwindow: Deprecate gdk_window_flush 2014-06-20 20:41:53 -04:00
gdkwindowimpl.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkwindowimpl.h gdkwindow: Remove the internal cairo_surface used for out-of-band painting 2014-06-20 20:41:54 -04:00
gdkx.h Change FSF Address 2012-02-27 17:06:11 +00:00
gen-keyname-table.pl gdk: Make gen-keyname-table.pl work again 2011-10-26 10:36:43 +01:00
keyname-table.h docs: use proper quotations instead of '*' 2014-02-07 14:22:39 -05:00
keynames-translate.txt Add AudioMicMute 2013-07-17 17:52:19 -04:00
keynames.txt Fix key "Page_Down" identified as "Next" 2013-10-24 18:48:33 -04:00
Makefile.am gdk/Makefile.am: Fix MSVC Project Generation 2014-06-03 17:00:02 +08:00
makefile.msc win32: gdk3 resurrection 2011-01-02 13:33:04 +01:00