1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-06 11:50:51 -08:00
emacs/etc
Daniel Colascione c29071587c Add double-buffering support to reduce flicker
* src/dispextern.h (struct glyph_string): Remove window member
(block_buffer_flips, unblock_buffer_flips)
(buffer_flipping_blocked_p): Declare.

* src/xterm.h (struct x_display_info): New member supports_xdbe.
(struct x_output): New members draw_desc and need_buffer_flip.
(FRAME_X_DRAWABLE, FRAME_X_RAW_DRAWABLE)
(FRAME_X_DOUBLE_BUFFERED_P)
(FRAME_X_NEED_BUFFER_FLIP): New macros.
(set_up_x_back_buffer, tear_down_x_back_buffer)
(initial_set_up_x_back_buffer): Declare.

* src/xterm.c: Include Xdbe.h.
(x_begin_cr_clip, x_fill_rectangle, x_draw_rectangle)
(x_draw_vertical_window_border, x_update_end)
(x_setup_relief_color, x_draw_relief_rect)
(x_draw_fringe_bitmap, x_shift_glyphs_for_insert)
(x_scroll_run, x_draw_hollow_cursor, x_draw_bar_cursor): Use
FRAME_X_DRAWABLE instead of FRAME_X_WINDOW; rename local
variables appropriately; substitute calls to XClearArea with
x_clear_area, which DTRT for double buffering.
(x_clear_window, x_clear_area): In double-buffering mode, use
rect-drawing X functions instead of XClearWindow and
XClearArea, which always operate on the front buffer.
(show_back_buffer): New function.
(XTframe_up_to_date): Call show_back_buffer when done.
(x_clear_frame, x_clear_frame_area): Remove obsolete calls to
gtk_widget_queue_draw to refresh scroll bars; scroll bars are
now independent X windows.
(handle_one_xevent): Call font_drop_xrender_surfaces when
XftDraw might need regenerating; perform buffer flip when
responding to Expose events; issue front-buffer clearing
commands as stopgap while we wait for redisplay.
Call flush_dirty_back_buffers.
(x_make_frame_visible): Un-bitrot comment; move XSETFRAME
earlier in function.
(x_free_frame_resources): Call tear_down_x_back_buffer when
destroying frame.
(x_term_init): Attempt to initialize double buffer extension.
(x_flip_and_flush): New function.
(x_redisplay_interface): Point to x_flip_and_flush instead of
x_flip directly.
(flush_dirty_back_buffers): New function.
(x_create_terminal): Register buffer_flipping_unblocked_hook.

* src/xftfont.c (xftfont_drop_xrender_surfaces): Use
FRAME_X_DRAWABLE instead of FRAME_X_WINDOW.
(xftfont_draw): Call x_mark_frame_dirty.
(xftfont_drop_xrender_surfaces): New function.
(syms_of_xftfont): Register it.

* src/xfont.c (xfont_draw): Use FRAME_X_DRAWABLE instead of
FRAME_X_WINDOW.

* src/xfns.c: Include Xdbe.h.
(x_set_inhibit_double_buffering, set_up_x_back_buffer)
(Fx_double_buffered_p): New functions.
(x_window): Call initial_set_up_x_back_buffer.
(x_make_gc): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW.
(Fx_create_frame): Configure `inhibit-double-buffering'
frame parameter.
(x_create_tip_frame): Call initial_set_up_x_back_buffer.
(x_frame_parm_handlers): Register
x_set_inhibit_double_buffering.
(syms_of_xfns): Register Sx_double_buffered_p.
(x_mark_frame_dirty): Define.

* src/xfaces.c (x_create_gc): Use FRAME_X_DRAWABLE instead of
FRAME_X_WINDOW.

* src/xdisp.c (remember_mouse_glyph, init_glyph_string): Use
FRAME_X_DRAWABLE instead of FRAME_X_WINDOW.
(redisplay_internal): Restart redisplay if a frame is garbaged
during updating; explain why. Block buffer flips
during redisplay.
(redisplay_preserve_echo_area): Block buffer flip during call
to redisplay_internal.
(buffer_flip_blocked_depth): New variable.
(block_buffer_flips, unblock_buffer_flips)
(buffer_flipping_blocked_p): New functions.
(init_glyph_string): Stop setting window member of struct
glyph_string.

* src/w32fns.c (w32_frame_parm_handlers): Add placeholder for
x_set_inhibit_double_buffering.

* src/termhooks.h (struct terminal): Add
buffer_flipping_unblocked_hook.

* src/nsfns.m (ns_frame_parm_handlers): Add placeholder for
x_set_inhibit_double_buffering.

* src/image.c (x_create_bitmap_from_data)
(x_create_bitmap_from_file, x_create_x_image_and_pixmap)
(Create_Pixmap_From_Bitmap_Data)
(x_create_bitmap_from_xpm_data, xpm_load, gs_load): Use
FRAME_X_DRAWABLE instead of FRAME_X_WINDOW; rename local
variables appropriately.

* src/gtkutil.c: Include Xdbe.h.
(xg_get_widget_from_map): Forward declare.
(xg_clear_under_internal_border): Remove obsolete calls to
refresh scroll bars.
(xg_create_frame_widgets): Call initial_set_up_x_back_buffer.
(xg_free_frame_widgets): Call tear_down_x_back_buffer; reset
FRAME_X_DRAWABLE as well as FRAME_X_WINDOW and for the
same reason.
(xg_set_background_color): Set scroll bar background colors.
(xg_finish_scroll_bar_creation): New function with common
logic of xg_create_scroll_bar, xg_create_horizontal_scroll_bar. Force
scroll bars to be real X11 windows.
(xg_create_scroll_bar, xg_create_horizontal_scroll_bar): Call
xg_finish_scroll_bar_creation.
(xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos):
Remove obsolete calls to refresh scroll bars; fix comments.

* src/ftxfont.c (ftxfont_get_gcs, ftxfont_draw_bitmap,
(ftxfont_draw_background): Use FRAME_X_DRAWABLE instead of
FRAME_X_WINDOW.

* src/frame.c (frame_parms): Add table entry for new
`inhibit-double-buffering' frame parameter
(syms_of_frame): Register Qinhibit_double_buffering.

* src/font.h (struct font_driver): Add new `flush_frame_caches' hook.
(font_drop_xrender_surfaces): Declare.

* src/font.c (font_drop_xrender_surfaces): New function.

* src/Makefile.in (XDBE_LIBS, XDBE_CFLAGS): Substitute.

* etc/NEWS: Mention use of double buffering

* doc/lispref/frames.texi (Management Parameters): Document
`inhibit-double-buffering' frame parameters.
(Visibility of Frames): Document `x-double-buffered-p'.

* configure.ac: Check for the X double buffer extension
2016-10-28 19:21:39 -07:00
..
charsets Update copyright year to 2016 2016-01-01 01:34:24 -08:00
e Prefer straight quoting in some etc text files 2015-08-26 14:09:07 -07:00
forms Update copyright year to 2016 2016-01-01 01:34:24 -08:00
gnus
images Fix copyright years by hand 2016-01-01 01:38:07 -08:00
nxml Update nXML to use Emacs's Unicode support, and lexical-binding 2016-01-15 10:29:20 -05:00
org Update copyright year to 2016 2016-01-01 01:34:24 -08:00
refcards Bump Emacs version to 26.0.50 2016-10-01 11:14:05 +03:00
schema Update copyright year to 2016 2016-01-01 01:34:24 -08:00
srecode Update copyright year to 2016 2016-01-01 01:34:24 -08:00
themes New face homoglyph 2016-10-16 22:51:51 -07:00
tutorials Fix copyright years by hand 2016-01-01 01:38:07 -08:00
AUTHORS * etc/AUTHORS: Regenerate the AUTHORS file 2016-09-15 23:08:14 +02:00
CALC-NEWS Update copyright year to 2016 2016-01-01 01:34:24 -08:00
CENSORSHIP Make some files in etc obsolete 2014-03-22 16:47:20 -07:00
ChangeLog.1 Spelling and grammar fixes 2016-01-01 01:59:19 -08:00
compilation.txt ; Spelling and quoting fixes 2016-05-01 18:53:31 -07:00
COPYING
DEBUG Merge from origin/emacs-25 2016-09-26 13:32:28 -07:00
DEVEL.HUMOR Prefer straight quoting in some etc text files 2015-08-26 14:09:07 -07:00
DISTRIB Update copyright year to 2016 2016-01-01 01:34:24 -08:00
edt-user.el Kevin Gallagher has new email address 2016-02-10 20:40:28 +02:00
emacs-buffer.gdb Merge from origin/emacs-25 2016-10-23 02:43:16 -07:00
emacs.appdata.xml Update copyright year to 2016 2016-01-01 01:34:24 -08:00
emacs.desktop * etc/emacs.desktop: Add "Keywords". 2014-10-30 21:10:19 -07:00
emacs.icon
enriched.txt Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ERC-NEWS Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ETAGS.EBNF Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ETAGS.README Update copyright year to 2016 2016-01-01 01:34:24 -08:00
FTP Make etc/FTP and etc/ORDERS obsolete 2014-01-09 21:44:51 -05:00
future-bug
GNU Update copyright year to 2015 2015-01-01 09:18:06 -08:00
GNUS-NEWS Resurrect GNUS-NEWS autogeneration 2016-03-23 00:08:21 -07:00
gnus-tut.txt Update copyright year to 2016 2016-01-01 01:34:24 -08:00
grep.txt Update copyright year to 2016 2016-01-01 01:34:24 -08:00
HELLO * etc/HELLO: Add Armenian and Mongolian greetings. 2016-01-11 20:12:12 +02:00
HISTORY ; Update ChangeLog.2 and ldef-boot.el for Emacs 25.1 release 2016-09-15 23:30:09 +02:00
JOKES
LINUX-GNU Make some files in etc obsolete 2014-03-22 16:47:20 -07:00
MACHINES Remove support for IRIX 2016-03-07 08:26:36 -08:00
MH-E-NEWS Update copyright year to 2016 2016-01-01 01:34:24 -08:00
MORE.STUFF * etc/MORE.STUFF: Replace contents with pointer to efaq.info. 2014-01-09 14:14:28 -05:00
NEWS Add double-buffering support to reduce flicker 2016-10-28 19:21:39 -07:00
NEWS.1-17 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
NEWS.18 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
NEWS.19 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
NEWS.20 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
NEWS.21 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
NEWS.22 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
NEWS.23 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
NEWS.24 Update copyright year to 2016 2016-01-01 01:34:24 -08:00
NEWS.25 Merge from origin/emacs-25 2016-10-23 02:48:50 -07:00
NEXTSTEP Update copyright year to 2016 2016-01-01 01:34:24 -08:00
NXML-NEWS Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ORDERS Make etc/FTP and etc/ORDERS obsolete 2014-01-09 21:44:51 -05:00
ORG-NEWS Update copyright year to 2016 2016-01-01 01:34:24 -08:00
package-keyring.gpg * etc/package-keyring.gpg: New file. 2014-09-24 10:28:27 -04:00
PROBLEMS * etc/PROBLEMS: Remove problem Bug#22814, again. 2016-09-27 10:39:09 +02:00
ps-prin0.ps Update copyright year to 2016 2016-01-01 01:34:24 -08:00
ps-prin1.ps Update copyright year to 2016 2016-01-01 01:34:24 -08:00
publicsuffix.txt Update publicsuffix.txt. 2016-02-06 16:11:18 +11:00
README Update copyright year to 2016 2016-01-01 01:34:24 -08:00
rgb.txt
ses-example.ses Update copyright year to 2016 2016-01-01 01:34:24 -08:00
spook.lines
TERMS Update copyright year to 2016 2016-01-01 01:34:24 -08:00
THE-GNU-PROJECT Make some files in etc obsolete 2014-03-22 16:47:20 -07:00
TODO etc/TODO: Remove out-of-place issue 2016-05-29 20:29:47 -04:00
WHY-FREE Make some files in etc obsolete 2014-03-22 16:47:20 -07:00
yow.lines Prefer straight quoting in some etc text files 2015-08-26 14:09:07 -07:00

This directory contains the architecture-independent files used by or
with Emacs.  This includes some text files of documentation for GNU
Emacs or of interest to Emacs users, and the file of dumped docstrings
for Emacs functions and variables.

COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES

File: emacs.icon
  Author: Sun Microsystems, Inc
  Copyright (C) 1999, 2001-2016 Free Software Foundation, Inc.
  License: GNU General Public License version 3 or later (see COPYING)