Skip to content
Snippets Groups Projects
  1. Jun 03, 2023
    • Deucе's avatar
      Set _NET_WM_PID · bf9cfc12
      Deucе authored
      Seems like a good idea, should allow WMs to kill hung processes and
      stuff like that.
      bf9cfc12
    • Deucе's avatar
      Disable X Synchronize and some minr optimizations in set_icon() · bbeb07bc
      Deucе authored
      The XSynchronize disablement is the most important here... didn't
      realize it defaulted to enabled, which has been slowing down a *lot*
      of stuff for a long time... not that there's much left that benefits
      from disabling Synchronized XLib except this new terrible icon thing.
      bbeb07bc
  2. Jun 02, 2023
  3. May 31, 2023
    • Deucе's avatar
      More X11 improvements · ea7a6600
      Deucе authored
      Use the default visual and depth instead of "best"
      Use Xrender for sclaing when library is available and server supports it
      Set VisualIsRGB8 when possible
      ea7a6600
  4. May 24, 2023
    • Deucе's avatar
      A few scaling fixes for X11 mode... · 3833c243
      Deucе authored
      - getscaling() incorrectly used an int intermediate variable
        This would force scaling to an integer value when read.
      - Only parse ConfigureNotify events describing a change to the SyncTERM window
        It appears that XWayland on ChromeOS was occasionally sending a
        ConfigureNotify event describing some other window to SyncTERM,
        and that window had a 1x1 size, which would cause SyncTERM to
        assert minimum size again (usually 640x480), which would set
        scaling to 1.0.
      3833c243
  5. May 16, 2023
  6. May 15, 2023
  7. May 12, 2023
    • Deucе's avatar
      Use a double for scaling instead of an integer · f9808ca5
      Deucе authored
      All bitmap drivers now support arbitrary scaling, and the scaling
      factor is a double, allowing arbitrary window scaling in all bitmap
      modes (making nelgin happy).
      
      While we're here, fix bugs in horizontal interpolation and X window
      resizeing.
      f9808ca5
  8. May 07, 2023
  9. May 05, 2023
  10. May 04, 2023
    • Deucе's avatar
      Remove unised variable. · bf9b6dbf
      Deucе authored
      bf9b6dbf
    • Deucе's avatar
      Overhaul of X support · a59aba35
      Deucе authored
      Create initial window at final size to avoid extra resize at start
      - Load vmode before initializing the window
      Track scaling whenever the X window is adjusted
      Replace x11_window_height/x11_window_width with vstat.winwidth/vstat.winheight
      Resize zim from init_mode_internal() to ensure it tracks current size on initial expose
      Honour ciolib_initial_scaling
      Check xim validity in local_draw_rect() in case of race
      Add check to prevent divide-by-zero in handle_resize_event()
      Use vstat for current on-screen info, and x_cvstat for desired info
      - This allows using vstat.scaling in place of old_scaling
      Have scaling set use a new mutex-protected variable
      Fill in local_draw_rect() so we don't miss expose
      Set max window size based on user area (or root window size if not available)
      The WM Cyan uses may hate this...
      
      This absolutely *must* fix the issue in SF ticket 103.
      a59aba35
  11. May 02, 2023
  12. Apr 24, 2023
  13. Apr 23, 2023
  14. Jun 03, 2021
  15. May 21, 2021
    • Deucе's avatar
      Fix newly-introduced memory leak... · 233c1bf4
      Deucе authored
      I was going to start keeping the old rect around again, but that
      idea didn't pan out.  This massive memory leak is what I get for
      not doing more commits while tuning.
      233c1bf4
    • Deucе's avatar
      Optimizations: · cc1c4f34
      Deucе authored
      1) Keep a rectangle updated per-screen rather than regenerate each time
      2) Strip palette info when putting pixels into rectangles rather than
         during scaling
      3) Tighten up the screen locks a bit
      4) Don't require a full resend of both screens on an update request
      5) Only force a redraw for cursor movement when the cursor is visible
         (And force it whenever the cursor changes)
      6) Avoid doubles in interpolation
      7) Heavily optimize interpolate_height()
         interpolate_width() likely doesn't need it because it's generally not
         used and also it reads from the next pixel in memory making the
         prefetchers job easier.
      8) Fix some memory-leak-on-error issues
      9) For ARGB8 XImages, manipulate the data directly rather than through
         XPutPixel()
      
      At this point, the scaling and X11 output time is heavily dominated by
      cache misses.  The only really effective way to reduce this hit is to
      spread the work across all the L3 caches in the system or move it into
      the GPU.
      
      With the latest updates, at the SyncTERM menu, over 90% of the time is
      spent in the rendering pipeline, and over 90% of that time is spent
      thrashing the caches... the only real easy win left is vectorizing, but
      that's highly compiler specific.
      
      To that end, I've switched to -O3 for release builds.  There was a comment
      that -finline-functions broke Baja "badly", but that's clearly false since
      -f-inline-functions has been part of -O2 for quite a while now, and Baja
      doesn't seem any more broken that it ever was.
      cc1c4f34
  16. May 20, 2021
  17. May 19, 2021
    • Deucе's avatar
      Use display aspect ratio, not pixel for tracking. · b3f55216
      Deucе authored
      People are used to thinking about the aspect ratio of displays and
      used to not thinking at all about that of pixels.  Most of the modes
      are simplt 4:3 modes and the text area is the entire window.  The
      only oddball here is the Commodore 64 and 128 40-column modes.
      Because they have a border around them that's wider on the sides than
      the top/bottom, the display aspect ratio is actually narrower than
      a normal NTSC screen (6:5).  It seems the PAL version actually has
      square pixels, but nobody has asked for a PAL Commodore mode, and I
      think that has a different colour palette too so I'm not doing it.
      
      Just to frustrate DigitalMan a bit, the default custom aspect ratio
      is now 4:3 (but can be configured).  At present, modifying the custom
      mode while *in* the custom modes "works", which no sane person would
      want when adjusting the aspect ratio.
      b3f55216
  18. May 18, 2021
  19. May 15, 2021
Loading