diff options
| author | YAMAMOTO Mitsuharu | 2019-06-15 12:44:56 +0900 |
|---|---|---|
| committer | YAMAMOTO Mitsuharu | 2019-06-15 12:44:56 +0900 |
| commit | 1c3e8684c8b1d5f53e9eff05f0ea2a38b4207dd7 (patch) | |
| tree | 3dc80a2d48e361d9085ea6910f9194dad736d7c2 /src | |
| parent | 703b9d652b006b1ff6f81fd0ff47ce8c36dddc5e (diff) | |
| download | emacs-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.c | 47 |
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)); |