• src/conio/bitmap_con.c

    From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Mar 14 18:14:10 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/090c08a33308e9832fa21e6f
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Fix chunk end calculation for split vmem update

    Previously, would write the same areas multiple times, potentially
    resulting in differrent CRCs.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Mar 14 18:14:10 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/58ce9083d1d0352337d28c18
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Perform split updates with a single lock

    No need for a lock/unlock wrapper.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Mar 14 18:14:10 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/5bffab544f4fb52d66e4cf4a
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Fix a handful of subtle bugs caught running the terminal test...

    1) bitmap_draw_from_vmem() had some math wrong, which could result
    in a frame or two of the screen being drawn split. This was visible
    as a flash of the status bar being in the middle of the screen.
    2) With the update to a rwlock, the force parameter to update_from_vmem()
    NEEDS to ensure a redraw is done for consistency. While eventual
    consisency is fine for most cases, getting the checksum of a region
    strictly requires the region is fully updated first.
    3) vstat was being written in two cases with the read lock held...
    one was when resetting the "changed" flag to false during an
    update, and the other was when adjusting the reveal bit in prestel
    mode.
    4) bitmap_movetext() and the corresponding bitmap_movetext_screen()
    almost certainly had a bug in them. They basically did the exact
    same thing, just one to the vmem and the other to the screen data.
    How they went about that however was wildly different. Rewrote
    most of these functions so they re-use calculations and don't
    both do hard-to-understand math.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Mar 15 14:09:13 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/8dda8ba2f94dd1534aacf061
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Fix integer division in bitmap_setcustomcursor() cursor scaling

    The ratio variable is declared as double, but vstat.charheight/r performed integer division since both operands are int. This truncated the scaling
    ratio (e.g. 16/14 = 1 instead of 1.143), causing cursor start/end positions
    to not scale correctly when switching between font heights.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue Mar 17 00:41:05 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/e0b825c458da099f74f1fc6d
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Pre-compute Prestel double-height row states once per frame

    calc_charstate() was scanning all rows 0..ypos-1 for every cell to
    determine top/bottom double-height status, making full redraws
    O(rows^2 * cols). Pre-compute the row state array once in
    update_from_vmem() and pass it through the call chain. Callers from bitmap_setpixel/setpixels pass NULL to retain the existing per-cell
    scan (always single-cell, so the old path is fine).

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue Mar 17 10:47:28 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/070cbc5c3dc94166d5f5a667
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Remove TODO comment... yes, we do.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue Mar 17 11:59:17 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/14f279ca37de873b6fb75317
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Hold vstat_chlock when setting vmem->changed in blinker thread

    Every other write to vmem->changed holds vstat_chlock; this was the
    sole exception. The wrlock on vstatlock already prevented concurrent
    access in practice, but this makes the locking protocol consistent
    and is not in a hot path. (Coverity CID 644904)

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Mar 21 10:14:19 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/c7ed5d30673a1a4c595ba916
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Add a dotted underline on the bottom cell row for OCS 8

    Makes hyperlinks more discoverable.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Mar 21 17:58:42 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/d7f9da7d45ee2d342f2b7328
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Initialize hyperlink_id for initial window

    Reported at Kampfire.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Thu Apr 2 23:56:26 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/dc7a1772724dceba49502355
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Clear "gap rows" when pixel scrolling

    Previously, when EGA 43-row modes scrolled, the top line was partially
    copied to the bottom of the screen and never cleared.

    This was part of the optimization that made the screen buffer into
    a ring buffer instead of linear.

    Fixes ticket 228.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri Apr 3 08:52:32 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/01b5228eeb0dc363b8e4155e
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    When forcing a font, add a default

    It's forced, force it.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Apr 12 19:48:59 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/5fdfaf77ce0e2771206ade48
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Always force cursor when setting it.

    Previously disabling the cursor didn't force it, so it would stay
    on the screen in the last state until the frame changed.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Apr 15 11:48:26 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/23de7cfc44f887bde6f3b999
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Ensure fonts are loaded before screens are allocated.

    Should make the assertion at bitmap_con.c:659 even more impossible
    than it already is.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Apr 15 12:00:17 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/e0866a9f75121405ad7c5332
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Don't FREE_AND_NULL() font[0]

    This is the last-ditch fallback, so if bitmap_loadfont_locked()
    fails, it should stay available.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Apr 15 12:04:34 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/77734fae7989a2779f854123
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Protect the hell out of font[0]

    We REALLY want it to always be valid.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Apr 15 12:09:30 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/8a3ca35ac316370dc567e51a
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Even MORE font[0] paranoia on failure...

    Try as hard as possible to get an allocated copy of CP437 into there.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Apr 15 12:29:16 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/dda0e61a855b882023ec8fe4
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Also reset current_font[] on error

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Apr 23 21:51:19 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/2e5da7dd5b999e297a91804e
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Eliminate extra copy of screen in bitmap console, push down vstatlock more.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Mon Apr 24 16:23:21 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/db8aca661a09a19bd21675c8
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Push update_pixels down and force a redraw on font change.

    update_pixels should only be set when at least one pixel has
    actually been changed... setting it when pixels have not been
    changed causes unneeded screen updates.

    Previously, a font change asserted (incorrectly) that the pixels in
    the screen had been modified, so the change would occur at the end
    of the next blink cycle when alt fonts are checked. Now it
    requests a full redraw from vmem when a font is changed, which will
    trigger a redraw the next time the blinker thread triggers (~5ms).

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Mon Apr 24 16:23:21 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/656cc27bdfb3667de9995a71
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Combine the screen locks

    We only really ever treat it as a single lock, so we may as well
    simplify this.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Mon Apr 24 16:23:21 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/cece8b67872af488e9c63d6b
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Push vstatlock into bithmap_draw_one_char()

    A bit more cleanup here would be good, but I think this is pushed
    down enough finally.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue Apr 25 20:59:33 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/743b2ae00956dfaa52080a4b
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Move vstat copy inside vstatlock

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri Apr 28 13:51:19 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/24cb0a05bcdf56d8925554e4
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Clean up blinker thread

    There was a lot of weird things going on to avoid locking vstatlock
    inside of screenlock. Simply this by copying needed vstat stuff
    while we hold the lock.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri Apr 28 21:10:46 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/026c7d89b401a4da7196d631
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Extend cstatlock to cover vmem

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed May 3 13:25:22 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/fe019abeb0c4104e1562d311
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Remove unused variables

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri May 5 21:03:13 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/c625f2e6f764e4e80d2eab87
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Fix buffer overflow in bitmap movetext()

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri May 5 21:16:28 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/18607b08946590f5a36a1959
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Fixx off-by-one in last commit.

    Stupid 1-based coordinates.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri May 5 22:44:48 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/bbd16c32cf6e33a1d1cdb7bf
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Fix more buffer overflows.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Mon Jun 5 15:03:29 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/7cdf96b094437ed39f49008d
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Fix GDI brakage in frameskipping.

    Win32GDI currently requires two rects to be available.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on ChromeOS)@VERT to Git commit to main/sbbs/master on Sun Jun 18 13:22:12 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/14da36cb0e3a333e162b9a26
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Fix GCC UBSan (SANITIZE=1 build) runtime error

    left shift of 255 by 24 places cannot be represented in type 'int'

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuce@VERT to Git commit to main/sbbs/master on Sat Jul 29 11:29:37 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/febaa22a9f29c18777b14b9a
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Fix non-integer scaling corruption when r2y is NULL

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sat Feb 10 16:45:22 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/0e9e499fa00a31db0271fa73
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Resolve some MSVC warnings

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Feb 24 07:07:39 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/92216995054bc941ffc88a68
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    Don't imply the callbacks need to be protected by the mutex.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri Apr 17 22:23:35 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/fcb3c9669f8d83c15e5c5e08
    Modified Files:
    src/conio/bitmap_con.c
    Log Message:
    If a cells hyperlink id has change from or to zero, redraw

    Spaces weren't getting redrawn with the link underscore thing.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net