gtk/gdk/macos
Christian Hergert 58b9c3a6d4 macos: use CGContext to draw cairo surfaces
Instead of relying on cairo_t to perform drawing from our backing
image surface to the Core Graphics context, we can convert the
cairo_image_surface_t into a CGImageRef without having to copy
data if we are certain of the alignment of the image up front.

Without this, there are many situations, based on the size of the
window that could cause cairo to take a slow path and malloc/copy
the data to ensure that alignment.

The previous commit titled "macos: align image surface rowstride to
16-bytes" ensures that this invariant is true so that our drawing
code can assume we can reference the framebuffer from the
cairo_image_surface_t using a CGDataProvider.

Since GdkMacosCairoContext and GdkMacosCairoSubview are coordinating,
we can also setup the transformation/scale early when drawing the
cairo_image_surface_t instead of when copying it to Core Graphics.

Furthermore, the CGImageRef is created with an RGB colorspace so
that we are not performing colorspace conversion to the output
device. We don't get color matching between displays, but we don't
expect that anyway, particularly with the software renderer.
2022-02-03 19:26:16 -08:00
..
edgesnapping.c
edgesnapping.h gdk: Drop GdkPoint from the api 2020-10-29 14:23:46 -04:00
gdkdisplaylinksource.c Avoid copying static debug strings 2021-07-28 22:42:46 -04:00
gdkdisplaylinksource.h
gdkmacos.h
GdkMacosBaseView.c macos: Don't include gdkinternals.h 2021-09-24 22:50:29 +02:00
GdkMacosBaseView.h
gdkmacoscairocontext-private.h
gdkmacoscairocontext.c macos: use CGContext to draw cairo surfaces 2022-02-03 19:26:16 -08:00
GdkMacosCairoSubview.c macos: use CGContext to draw cairo surfaces 2022-02-03 19:26:16 -08:00
GdkMacosCairoSubview.h macos: use CGContext to draw cairo surfaces 2022-02-03 19:26:16 -08:00
GdkMacosCairoView.c macos: use CGContext to draw cairo surfaces 2022-02-03 19:26:16 -08:00
GdkMacosCairoView.h
gdkmacosclipboard-private.h macos: make pasteboard usage reusable 2021-06-17 17:19:19 -07:00
gdkmacosclipboard.c macos: make pasteboard usage reusable 2021-06-17 17:19:19 -07:00
gdkmacoscursor-private.h
gdkmacoscursor.c Replace "gchar" with "char" 2020-07-25 00:47:36 +02:00
gdkmacosdevice-private.h macos: Stop using _gdk_device_query_state 2020-08-26 17:56:41 -04:00
gdkmacosdevice.c macos: track grab serial like other backends 2020-12-02 11:34:31 -08:00
gdkmacosdevice.h
gdkmacosdisplay-private.h macos: implement GdkDrop for macOS 2021-06-17 17:26:42 -07:00
gdkmacosdisplay-settings.c Replace "gchar" with "char" 2020-07-25 00:47:36 +02:00
gdkmacosdisplay-translate.c gdk: Prepare touchpad events for sequences 2021-12-15 21:58:57 -05:00
gdkmacosdisplay.c macos: be more careful about freezing/thawing surfaces 2022-02-03 19:26:16 -08:00
gdkmacosdisplay.h
gdkmacosdrag-private.h
gdkmacosdrag.c macos: Don't include gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkmacosdragsurface-private.h macos: move drag motion to GdkMacosDrag 2021-06-17 13:24:39 -07:00
gdkmacosdragsurface.c macos: move drag motion to GdkMacosDrag 2021-06-17 13:24:39 -07:00
gdkmacosdrop-private.h macos: implement GdkDrop for macOS 2021-06-17 17:26:42 -07:00
gdkmacosdrop.c macos: implement GdkDrop for macOS 2021-06-17 17:26:42 -07:00
gdkmacoseventsource-private.h
gdkmacoseventsource.c docs: Cosmetics 2021-10-18 08:35:54 -04:00
gdkmacosglcontext-private.h macos: Don't include gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkmacosglcontext.c macos: Fix return value 2021-11-03 22:53:59 +01:00
gdkmacosglcontext.h
GdkMacosGLView.c macos: Don't include gdkinternals.h 2021-09-24 22:50:29 +02:00
GdkMacosGLView.h macos: implement GL context 2020-10-29 10:57:02 -07:00
gdkmacoskeymap-private.h macos: add key equivalent helper 2020-10-09 20:03:52 -07:00
gdkmacoskeymap.c Correct translation of Mac JIS Eisu & Kana keys 2021-07-24 20:59:18 +09:00
gdkmacoskeymap.h
gdkmacosmonitor-private.h
gdkmacosmonitor.c Documentation fixes 2021-05-20 19:17:49 -04:00
gdkmacosmonitor.h macos: track various changes in GDK 2020-10-09 20:02:18 -07:00
gdkmacospopupsurface-private.h
gdkmacospopupsurface.c macos: remove popup surface from parent 2022-02-03 19:26:16 -08:00
gdkmacosseat-private.h Support stylus devices on macos 2021-01-11 11:41:00 +01:00
gdkmacosseat.c macos: Fix a compiler warning 2021-06-17 17:14:14 -07:00
gdkmacosseat.h Support stylus devices on macos 2021-01-11 11:41:00 +01:00
gdkmacossurface-private.h macos: be more careful about freezing/thawing surfaces 2022-02-03 19:26:16 -08:00
gdkmacossurface.c macos: be more careful about freezing/thawing surfaces 2022-02-03 19:26:16 -08:00
gdkmacossurface.h
gdkmacostoplevelsurface-private.h macos: fix resizing of resizable windows on macOS 2021-02-19 15:43:49 -08:00
gdkmacostoplevelsurface.c macos: Don't include gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkmacosutils-private.h macos: handle point conversion on older macOS 2021-01-05 13:52:11 -08:00
GdkMacosWindow.c macos: Don't include gdkinternals.h 2021-09-24 22:50:29 +02:00
GdkMacosWindow.h
meson.build macos: implement GdkDrop for macOS 2021-06-17 17:26:42 -07:00