Skip to content
Snippets Groups Projects
  1. Nov 06, 2022
  2. Jun 11, 2022
  3. May 24, 2022
  4. Mar 20, 2022
  5. May 21, 2021
    • 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
  6. Mar 31, 2021
    • Deucе's avatar
      os is lower-case. · 41d510e7
      Deucе authored
      Fixes *nix builds of Win32 programs.
      41d510e7
    • Deucе's avatar
      Use new PREFER_POLL define to control poll() usage · 663ca552
      Deucе authored
      Rather than depending on _WIN32 which is silly, make it clear what
      exactly is being done and why.
      
      Note that the spy socket stuff and some external stuff on *nix have
      had the select() implementation removed.  To support using select()
      on !Win32 will require de-refactoring that's not really worth doing.
      Instead, just use #error and reference the commit where the old
      code can be found.
      663ca552
  7. Mar 20, 2021
    • Deucе's avatar
      Add support for MinGW-w64 · 31c717f9
      Deucе authored
      MinGW32 is getting long in the tooth and is missing a lot of modern
      Windows features as well as having broken headers.  Most people will
      be using MinGW-w64 at this point, so add support for it.  Once I
      ensure SyncTERM works properly with it, MinGW32 support will be
      discontinued.
      
      I suspect this will impact exactly zero people since the reason this
      exists is to build the Win32 versions of SyncTERM on FreeBSD.
      
      Changes:
      - Explicitly request 32-bit Windows output
      - Detect the string "mingw32" anywhere in the hardware description
      - Explicitly link with libuuid
      - Add a terrible hack to syncterm.c to block wincrypt.h
      31c717f9
  8. Mar 08, 2021
    • Rob Swindell's avatar
      Add -std=c++11 for .cpp builds · 5bf6256a
      Rob Swindell authored
      Hope to address error reported by rjwboys via IRC when using
      gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
       from ansiterm.cpp:22   /user/include/c++/5/bits/c++0x_warning.h:32:2
      error #error this file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
      5bf6256a
  9. Jan 11, 2021
  10. Nov 22, 2020
  11. Nov 17, 2020
  12. Oct 22, 2020
    • Rob Swindell's avatar
      We must explicitly set _FILE_OFFSET_BITS=64 to use Linux OFD locks · caec4ea8
      Rob Swindell authored
      The Linux lock() implementation in xpdev/filewrap.c requires that
      _FILE_OFFSET_BITS is set to 64 or else OFD (sane) locks are not
      used on Linux, defaulting back to the crazy per-process file region
      locking of Linux of old. This was done in this commit:
      http://cvs.synchro.net/commitlog.ssjs?99999#39639
      because:
      https://patchwork.kernel.org/patch/9289177/
      
      but on 64-bit Linux, large file support is assumed and you don't
      actually need to define _FILE_OFFFSET_BITS, we're peforming this
      check for 32-bit Linuxes. Perhaps a check to see if sizeof(off_t)
      == 8 would have been better. However, this change enables OFD
      Locks for *all* flavors of Linux (not just 64-bit) - so that's
      better.
      
      Why do we care? Because using region locks on the same file in
      a multi-threaded program doesn't really work right on Linux without
      using OFD Locks. I saw this problem with receiving multiple
      simultaneous emails in the mailserver and getting smb_locksmbhdr()
      errors/failures when trying to save the message data or headers
      of the one or more messages every time GitLab would send email
      out to those whoe have opted-in to received email notifications
      upon gitlab.synchro.net activity.
      caec4ea8
  13. Aug 16, 2020
  14. May 02, 2020
  15. Apr 30, 2020
    • deuce's avatar
      Completely disentangle xpdev/xpbeep.c from conio/sdlfuncs.c · d3d10271
      deuce authored
      SDL audio should work from any thread, and on the platforms that care,
      SDL video is coddled appropriately.
      The only question is around SDL_Quit() in an audio-only build, but we
      can punt on that since the default builds will never do that... the only
      thing I'm aware of that could be broken that way is tone, which nobody
      likes anyway.
      d3d10271
  16. Apr 25, 2020
  17. Mar 20, 2020
  18. Aug 12, 2019
  19. Jun 28, 2019
  20. May 30, 2019
  21. Mar 09, 2018
  22. Feb 09, 2018
  23. Feb 03, 2018
  24. Dec 13, 2017
  25. Jan 13, 2017
  26. Sep 02, 2015
  27. Aug 22, 2015
  28. May 12, 2015
  29. Apr 18, 2015
  30. Feb 07, 2015
  31. Feb 06, 2015
  32. Oct 06, 2014
  33. Apr 28, 2014
  34. Apr 04, 2014
  35. Apr 03, 2014
Loading