• Alan Third's avatar
    Draw to offscreen buffer on macOS · 53f3d1f9
    Alan Third authored
    * src/nsfns.m (x_set_background_color): Clear the frame after changing
    the background color, not before.
    * src/nsterm.h (drawingBuffer): New variable.
    ([EmacsView focusOnDrawingBuffer]):
    ([EmacsView copyRect:to:]):
    ([EmacsView createDrawingBufferWithRect:]): New methods.
    * src/nsterm.m (ns_update_begin):
    (ns_unfocus): Handle drawing to offscreen buffer.
    (ns_clip_to_row): Use ns_row_rect.
    (ns_copy_bits): Remove unused function.
    (ns_shift_glyphs_for_insert): Use new scrolling method.
    (ns_dumpglyphs_image): When drawing to the offscreen buffer, flip
    images so they appear the right way up.
    (ns_dumpglyphs_stretch): Remove unnecessary code.
    (ns_draw_window_cursor): Don't disable screen updates.
    ([EmacsView updateFrameSize:]): Update the size of the offscreen
    ([EmacsView initFrameFromEmacs:]): Create offscreen buffer.
    ([EmacsView windowDidChangeBackingProperties:]):
    ([EmacsView createDrawingBufferWithRect:]):
    ([EmacsView focusOnDrawingBuffer]):
    ([EmacsView copyRect]): New methods.
    ([EmacsView viewWillDraw]): Remove method as it no longer does
    anything useful.
    ([EmacsView drawRect:]): Handle drawing from offscreen buffer.
nsterm.h 44.8 KB