gtk2/gdk
Benjamin Otte 813e9c95fb gdk: Add Cairo context implementations for all backends
And make the GdkCairoContext as abstract.

The idea of this and thje following commits is to get rid of all
Cairo code in gdksurface.c (and $backend/gdksurface-$backend.c)
by moving that code into the Cairo context files.
In particular, the GdkSurfaceClass.begin_frame/end_frame()
functions (which are currently exclusively used by the Cairo code
should end up being moved to GdkDrawContextClass.begin/end_frame().

This has multiple benefits:

1. It unifies code between the different drawing contexts.
   GL lives in GLContext, Vulkan in VulkanContext and Cairo in
   CairoContext. In turn, this makes it way easier to reason about
   what's going on in surface-specific code. Currently pretty much
   all backends do things wrong when they want to sync to drawing
   or to the frame clock.

2. It makes the API of GdkSurface smaller. No drawing code (apart
   from creating the contexts) needs to remain.

3. It confines Cairo to the Drawcontext, thereby making it way
   more obvious when backends are still using it in situations
   where it may now conflict with OpenGL (like when doing the dnd
   failed animation or in the APIs that I'm removing in this
   branch).

4. We have 2 very different types of Cairo contexts: The X/win32
   model, where we have a natively supported Cairo backend but do
   double buffering ourselves and use similar surfaces and the
   Wayland/Broadway model where we use image surfaces without any
   Cairo backend support and have to submit the buffers manually.
   By not sharing code between those 2 versions, we can make the
   actual code way smaller. We also get around the need to create
   1x1 image surfaces in the Wayland backend where we pretend
   there's a native Cairo surface.
2018-04-24 23:16:12 +02:00
..
broadway gdk: Add Cairo context implementations for all backends 2018-04-24 23:16:12 +02:00
quartz gdk: Add Cairo context implementations for all backends 2018-04-24 23:16:12 +02:00
resources/glsl
wayland gdk: Add Cairo context implementations for all backends 2018-04-24 23:16:12 +02:00
win32 gdk: Add Cairo context implementations for all backends 2018-04-24 23:16:12 +02:00
x11 gdk: Add Cairo context implementations for all backends 2018-04-24 23:16:12 +02:00
COPYING
fallback-c89.c
gdk-autocleanup.h GdkWindow -> GdkSurface initial type rename 2018-03-20 11:40:08 +01:00
gdk-private.h Fix up indentation after GdkSurface rename 2018-03-21 09:06:31 +01:00
gdk.c Remove all gdk_threads_* entry points 2018-02-03 12:07:10 +01:00
gdk.h gdk: Add GdkCairoContext 2018-04-24 23:16:12 +02:00
gdkapplaunchcontext.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkapplaunchcontext.h gdk: Include gio.h in gdktypes.h 2017-12-10 01:09:14 +01:00
gdkapplaunchcontextprivate.h gdk: Include gio.h in gdktypes.h 2017-12-10 01:09:14 +01:00
gdkcairo.c gdk: Remove gdk_cairo_surface_create_from_pixbuf() 2018-04-12 14:04:20 +02:00
gdkcairo.h gdk: Remove gdk_cairo_surface_create_from_pixbuf() 2018-04-12 14:04:20 +02:00
gdkcairocontext.c gdk: Add Cairo context implementations for all backends 2018-04-24 23:16:12 +02:00
gdkcairocontext.h cairocontext: Move a function 2018-04-24 23:16:12 +02:00
gdkcairocontextprivate.h gdk: Add GdkCairoContext 2018-04-24 23:16:12 +02:00
gdkclipboard.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkclipboard.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkclipboardprivate.h clipboard: Add infrastructure to store clipboards 2017-12-03 05:46:48 +01:00
gdkconfig.h.meson gdk/gdkconfig.h.meson: Add GDK_WINDOWING_WIN32 2017-09-15 21:41:15 +08:00
gdkconfig.h.win32
gdkconfig.h.win32_vulkan
gdkcontentdeserializer.c Allow binding GdkContentFormatsBuilder 2018-02-03 16:24:13 +01:00
gdkcontentdeserializer.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkcontentformats.c contentsformat: Avoid a GPtrArray 2018-02-25 16:47:20 +01:00
gdkcontentformats.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkcontentformatsprivate.h gdk: Sanitize GdkContentFormats API 2017-11-20 23:15:11 +01:00
gdkcontentprovider.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkcontentprovider.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkcontentproviderimpl.c Allow binding GdkContentFormatsBuilder 2018-02-03 16:24:13 +01:00
gdkcontentproviderimpl.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkcontentproviderprivate.h clipboard: Introduce GdkContentProvider 2017-12-03 05:46:47 +01:00
gdkcontentserializer.c Allow binding GdkContentFormatsBuilder 2018-02-03 16:24:13 +01:00
gdkcontentserializer.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkcursor.c GdkWindow -> GdkSurface initial type rename 2018-03-20 11:40:08 +01:00
gdkcursor.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkcursorprivate.h gdk: Add gdk_cursor_hash() and gdk_cursor_equal() 2017-11-04 00:07:13 +01:00
gdkdevice.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkdevice.h GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkdevicepad.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkdevicepad.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkdevicepadprivate.h
gdkdeviceprivate.h Fix up indentation after GdkSurface rename 2018-03-21 09:06:31 +01:00
gdkdevicetool.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkdevicetool.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkdevicetoolprivate.h
gdkdisplay.c surface: Remove GSK_SURFACE_ROOT 2018-03-21 00:58:01 +01:00
gdkdisplay.h GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkdisplaymanager.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkdisplaymanager.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkdisplaymanagerprivate.h
gdkdisplayprivate.h gdk: Add Cairo context implementations for all backends 2018-04-24 23:16:12 +02:00
gdkdnd.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkdnd.h GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkdndprivate.h GdkSurface: Rename various functions and variables 2018-03-20 12:05:26 +01:00
gdkdrawcontext.c drawcontext: Add a surface_resized() vfunc 2018-04-09 01:00:31 +02:00
gdkdrawcontext.h GdkSurface: Rename various functions and variables 2018-03-20 12:05:26 +01:00
gdkdrawcontextprivate.h drawcontext: Add a surface_resized() vfunc 2018-04-09 01:00:31 +02:00
gdkdrawingcontext.c cairocontext: Move a function 2018-04-24 23:16:12 +02:00
gdkdrawingcontext.h cairocontext: Move a function 2018-04-24 23:16:12 +02:00
gdkdrawingcontextprivate.h
gdkenumtypes.c.template
gdkenumtypes.h.template
gdkevents.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkevents.h GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkeventsprivate.h gdk: Remove unused area member from GdkEventExpose 2018-03-21 00:43:28 +01:00
gdkframeclock.c Add proper annotation for gdk_frame_clock_get_refresh_info 2018-03-12 16:07:39 +01:00
gdkframeclock.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkframeclockidle.c frameclockidle: Rename header so it's private now 2018-03-29 05:02:15 +02:00
gdkframeclockidleprivate.h frameclockidle: Rename header so it's private now 2018-03-29 05:02:15 +02:00
gdkframeclockprivate.h
gdkframetimings.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkframetimings.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkgl.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkglcontext.c glcontext: Store the buffer age regions in the GL context 2018-04-09 01:00:31 +02:00
gdkglcontext.h GdkSurface: Rename various functions and variables 2018-03-20 12:05:26 +01:00
gdkglcontextprivate.h glcontext: Store the buffer age regions in the GL context 2018-04-09 01:00:31 +02:00
gdkglobals.c gdk: Reorganize env vars 2018-01-14 17:05:04 -05:00
gdkgltexture.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkgltexture.h gltexture: Rename variable 2018-03-18 18:42:20 +01:00
gdkgltextureprivate.h texture: Expose subclasses as subclasses 2018-03-18 05:57:07 +01:00
gdkinternals.h glcontext: Store the buffer age regions in the GL context 2018-04-09 01:00:31 +02:00
gdkintl.h
gdkkeynames.c
gdkkeys.c gdk: Add some more docs 2018-02-11 00:41:31 +00:00
gdkkeys.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkkeysprivate.h
gdkkeysyms-update.pl
gdkkeysyms.h
gdkkeyuni.c Replace gdk_keymap_get_for_display by gdk_display_get_keymap 2017-12-15 07:44:58 -05:00
gdkmarshalers.list x11: Refactor xevent filtering some more 2017-12-13 01:55:56 +01:00
gdkmemorytexture.c texture: Change download vfunc 2018-03-12 17:21:45 +01:00
gdkmemorytexture.h texture: Expose subclasses as subclasses 2018-03-18 05:57:07 +01:00
gdkmemorytextureprivate.h texture: Expose subclasses as subclasses 2018-03-18 05:57:07 +01:00
gdkmonitor.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkmonitor.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkmonitorprivate.h monitor: Add a ::valid property 2017-11-01 14:17:20 -04:00
gdkpaintable.c snapshot: Redo debug messages 2018-04-24 04:06:58 +02:00
gdkpaintable.h paintable: Introduce gdk_paintable_new_empty() 2018-04-05 14:56:39 +02:00
gdkpango.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkpango.h Drop gdk_pango_context_get_for_display 2017-10-31 18:15:50 -04:00
gdkpipeiostream.c clipboard: Implement local fallback clipboard transfers 2017-12-03 05:46:47 +01:00
gdkpipeiostreamprivate.h clipboard: Implement local fallback clipboard transfers 2017-12-03 05:46:47 +01:00
gdkpixbuf-drawable.c GdkWindow -> GdkSurface: File renames 2018-03-20 11:46:11 +01:00
gdkpixbuf.h
gdkproperty.c Drop gdk_atom_intern 2017-12-13 23:39:03 -05:00
gdkproperty.h Drop gdk_atom_intern 2017-12-13 23:39:03 -05:00
gdkrectangle.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkrectangle.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkrgba.c gdkrgba: Add a missing apostrophe in a doc comment 2018-03-19 15:14:20 +00:00
gdkrgba.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkseat.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkseat.h GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkseatdefault.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkseatdefaultprivate.h
gdkseatprivate.h GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkselection.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdksnapshot.c snapshot: Turn into GObject 2018-03-18 19:21:33 +01:00
gdksnapshot.h snapshot: Turn into GObject 2018-03-18 19:21:33 +01:00
gdksnapshotprivate.h snapshot: Turn into GObject 2018-03-18 19:21:33 +01:00
gdksurface.c gdk: Add Cairo context implementations for all backends 2018-04-24 23:16:12 +02:00
gdksurface.h gdk: Add GdkCairoContext 2018-04-24 23:16:12 +02:00
gdksurfaceimpl.c surface: Make process_updates no longer be a vfunc 2018-03-21 23:28:26 +01:00
gdksurfaceimpl.h gdk: Remove gdk_surface_create_similar_image_surface() 2018-04-12 14:04:33 +02:00
gdktexture.c snapshot: Redo debug messages 2018-04-24 04:06:58 +02:00
gdktexture.h texture: Add gdk_texture_save_to_png() 2018-04-12 14:02:59 +02:00
gdktextureprivate.h texture: Change download vfunc 2018-03-12 17:21:45 +01:00
gdktypes.h gdk: Add GdkCairoContext 2018-04-24 23:16:12 +02:00
gdkversionmacros.h.in The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkvulkancontext.c vulkancontext: Add new error enum 2018-04-10 09:53:48 +02:00
gdkvulkancontext.h The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkvulkancontextprivate.h vulkan: Fix release builds 2018-01-21 15:23:17 +01:00
gen-gdk-gresources-xml.py
gen-keyname-table.pl
keyname-table.h gdk: Translate some more key names 2017-10-09 20:33:14 +02:00
keynames-translate.txt gdk: Translate some more key names 2017-10-09 20:33:14 +02:00
keynames.txt
meson.build gdk: Add GdkCairoContext 2018-04-24 23:16:12 +02:00