https://gitlab.synchro.net/main/sbbs/-/commit/fef47097a992813a7b89a8af
Added Files:
src/conio/cg_cio.h cg_cio.m cg_events.m
Modified Files:
src/build/Common.gmake src/conio/CMakeLists.txt Common.gmake GNUmakefile ciolib.adoc ciolib.c ciolib.h src/syncterm/CHANGES CMakeLists.txt COMPILING HACKING.md Manual.txt bbslist.c syncterm.c syncterm.man.in src/xpdev/CMakeLists.txt Common.gmake xpbeep.c xpbeep.h
Log Message:
Add native macOS Quartz display backend and CoreAudio sound
Replace SDL dependency on macOS with native AppKit/Core Graphics for
display and CoreAudio AudioQueue API for sound. Quartz and SDL are
mutually exclusive (both need the main thread); CMake and gmake
automatically disable SDL when Quartz is enabled.
Display backend (cg_cio.m, cg_events.m):
- NSWindow/NSView rendering via CGBitmapContext and CGContextDrawImage
- Internal scaling (xBR) with 1:1 backing pixel mapping on Retina
- External scaling via CG interpolation (no SyncTERM CPU overhead)
- vstat stores backing pixels; point conversion at NSWindow boundary
- macOS virtual keycode to AT Set 1 scancode translation
- Option = Alt for BBS keycodes; Cmd+Q/Cmd+V as macOS conventions
- Native NSMenu (SyncTERM, Edit, View) with keyboard shortcuts
- NSPasteboard clipboard, NSBitmapImageRep icon, NSCursor support
- applicationDidFinishLaunching: synchronization via semaphore
- applicationShouldTerminate: and windowShouldClose: enter quit loop
Audio backend (xpbeep.c):
- CoreAudio AudioQueue output with triple-buffered playback
- Callback-driven architecture matching existing xpbeep pattern
- Auto-detected on macOS; disable with WITHOUT_COREAUDIO
Build system:
- CMake: OBJC language, -framework Cocoa/Carbon, WITH_QUARTZ define
- gmake: .m compilation rules, framework linking, feature detection
- WITHOUT_QUARTZ option to disable; AUTO mode prefers Quartz on macOS
Co-Authored-By: Claude Opus 4.6 <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net