aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYAMAMOTO Mitsuharu2019-06-15 12:44:56 +0900
committerYAMAMOTO Mitsuharu2019-06-15 12:44:56 +0900
commit1c3e8684c8b1d5f53e9eff05f0ea2a38b4207dd7 (patch)
tree3dc80a2d48e361d9085ea6910f9194dad736d7c2 /src
parent703b9d652b006b1ff6f81fd0ff47ce8c36dddc5e (diff)
downloademacs-1c3e8684c8b1d5f53e9eff05f0ea2a38b4207dd7.tar.gz
emacs-1c3e8684c8b1d5f53e9eff05f0ea2a38b4207dd7.zip
Remove non-Xdbe double-buffering code on cairo
* src/xterm.c (x_begin_cr_clip, x_update_end) [USE_CAIRO]: Don't do handcrafted double-buffering with image surface.
Diffstat (limited to 'src')
-rw-r--r--src/xterm.c47
1 files changed, 6 insertions, 41 deletions
diff --git a/src/xterm.c b/src/xterm.c
index 1608621fc49..bc56e99513d 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -385,15 +385,12 @@ x_begin_cr_clip (struct frame *f, GC gc)
385 { 385 {
386 int width = FRAME_CR_SURFACE_DESIRED_WIDTH (f); 386 int width = FRAME_CR_SURFACE_DESIRED_WIDTH (f);
387 int height = FRAME_CR_SURFACE_DESIRED_HEIGHT (f); 387 int height = FRAME_CR_SURFACE_DESIRED_HEIGHT (f);
388 cairo_surface_t *surface; 388 cairo_surface_t *surface
389 if (FRAME_X_DOUBLE_BUFFERED_P (f)) 389 = cairo_xlib_surface_create (FRAME_X_DISPLAY (f),
390 surface = cairo_xlib_surface_create (FRAME_X_DISPLAY (f), 390 FRAME_X_RAW_DRAWABLE (f),
391 FRAME_X_RAW_DRAWABLE (f), 391 FRAME_X_VISUAL (f),
392 FRAME_X_VISUAL (f), 392 width, height);
393 width, height); 393
394 else
395 surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
396 width, height);
397 cr = FRAME_CR_CONTEXT (f) = cairo_create (surface); 394 cr = FRAME_CR_CONTEXT (f) = cairo_create (surface);
398 cairo_surface_destroy (surface); 395 cairo_surface_destroy (surface);
399 } 396 }
@@ -1243,38 +1240,6 @@ x_update_end (struct frame *f)
1243 /* Mouse highlight may be displayed again. */ 1240 /* Mouse highlight may be displayed again. */
1244 MOUSE_HL_INFO (f)->mouse_face_defer = false; 1241 MOUSE_HL_INFO (f)->mouse_face_defer = false;
1245 1242
1246#ifdef USE_CAIRO
1247 if (!FRAME_X_DOUBLE_BUFFERED_P (f))
1248 {
1249 block_input ();
1250 cairo_surface_t *source_surface = cairo_get_target (FRAME_CR_CONTEXT (f));
1251 if (source_surface)
1252 {
1253 cairo_t *cr;
1254 cairo_surface_t *surface;
1255 int width, height;
1256
1257 width = FRAME_PIXEL_WIDTH (f);
1258 height = FRAME_PIXEL_HEIGHT (f);
1259 if (! FRAME_EXTERNAL_TOOL_BAR (f))
1260 height += FRAME_TOOL_BAR_HEIGHT (f);
1261 if (! FRAME_EXTERNAL_MENU_BAR (f))
1262 height += FRAME_MENU_BAR_HEIGHT (f);
1263 surface = cairo_xlib_surface_create (FRAME_X_DISPLAY (f),
1264 FRAME_X_DRAWABLE (f),
1265 FRAME_X_VISUAL (f),
1266 width, height);
1267 cr = cairo_create (surface);
1268 cairo_surface_destroy (surface);
1269
1270 cairo_set_source_surface (cr, source_surface, 0, 0);
1271 cairo_paint (cr);
1272 cairo_destroy (cr);
1273 }
1274 unblock_input ();
1275 }
1276#endif
1277
1278#ifndef XFlush 1243#ifndef XFlush
1279 block_input (); 1244 block_input ();
1280 XFlush (FRAME_X_DISPLAY (f)); 1245 XFlush (FRAME_X_DISPLAY (f));