Thomas Harte
f417fa82a4
Splits 'CRTMachine' into three parts: ScanProducer, AudioProducer, TimedMachine.
...
Simultaneously cleans up some of the naming conventions and tries to make things a bit more template-compatible.
2020-04-01 23:19:34 -04:00
Thomas Harte
0e502f6d5c
Ensures the macOS version retains volume.
2020-03-23 00:10:56 -04:00
Thomas Harte
bd1b4b8a9f
Increases volume fade-out speed.
2020-03-22 21:13:55 -04:00
Thomas Harte
38d81c394f
Switches OSAtomics to stdatomics. The former were deprecated by macOS 10.12.
2020-03-22 21:11:04 -04:00
Thomas Harte
72103a4adb
Corrects execution cap for splitAndSync ticks.
2020-03-22 19:25:02 -04:00
Thomas Harte
e6bae261c4
Ensures volume controls appear for mouse-capture machines when not capturing.
2020-03-22 19:06:38 -04:00
Thomas Harte
5edb0c0ee7
Adds animated fade-out to volume control. Bumps macOS version to 10.12.2.
2020-03-22 18:45:24 -04:00
Thomas Harte
442ce403f9
It's a bit jarring, but ensures volume control shows and hides according to mouse cursor.
2020-03-22 16:25:07 -04:00
Thomas Harte
7398cb44e2
Adds a functioning volume control for macOS, it just doesn't know how to hide yet.
2020-03-22 13:24:23 -04:00
Thomas Harte
0c689e85a5
Use screen number for spotting screen changes.
...
NSScreen implements Swift Equatable but doesn't seem officially to implement -isEqual:.
2020-03-21 17:01:57 -04:00
Thomas Harte
5a1bae8a9c
Ensures proper NSScreen comparison, and no never-ending setupDisplayLink loop on exit.
2020-03-20 23:00:16 -04:00
Thomas Harte
9995d776de
Attempts to fix the macOS version, plus some implicit type conversions.
2020-03-18 23:29:09 -04:00
Thomas Harte
f9c8470b20
Ensure targets always nominate a machine.
2020-03-15 00:13:38 -04:00
Thomas Harte
3c70f056ed
Ensure race condition workaround is applied for all CVDisplayLinkStops.
...
This also centralises the workaround, the better for replacing it when I discover a safer alternative.
2020-03-11 22:09:36 -04:00
Thomas Harte
f08d500fd6
Attempts to factor out the latest keyboard logic and hook it in from SDL also.
2020-03-03 22:58:15 -05:00
Thomas Harte
1f41d9c5f5
Further improvement: if in physical mode, but pressing an unrecognised key, attempt to 'type' it.
2020-03-02 22:08:54 -05:00
Thomas Harte
575d0da4d1
Attempts better to describe options.
2020-03-01 21:31:40 -05:00
Thomas Harte
ed18092088
Extends logic for when to fall back on standard keypress logic even in logical mode.
2020-03-01 20:25:12 -05:00
Thomas Harte
560394fead
Ensures keys without symbols are forwarded.
2020-02-29 22:37:15 -05:00
Thomas Harte
32b2026734
Alters shortcut.
2020-02-29 20:01:21 -05:00
Thomas Harte
d5e781e8e1
Adds macOS UI option to use logical keyboard input.
2020-02-29 18:30:58 -05:00
Thomas Harte
4572c86f0f
Adds a third keyboard input mode, which maps to posting things as a typer.
2020-02-29 18:17:39 -05:00
Thomas Harte
91e7400bbb
Avoids double-setting of the OpenGL view.
2020-02-18 22:33:16 -05:00
Thomas Harte
a8d082c7d2
Makes audioQueue atomic to avoid potential data race.
2020-02-18 22:31:24 -05:00
Thomas Harte
43740a4b2f
Adds support for stereo output.
2020-02-16 14:14:10 -05:00
Thomas Harte
f99d672237
The macOS port now selects stereo output if appropriate.
2020-02-16 14:05:50 -05:00
Thomas Harte
49b8e771b5
Adds the messaging that would allow a Speaker to output stereo, semantically.
2020-02-15 13:40:19 -05:00
Thomas Harte
e1892ff370
Resolves crash upon File -> New..., Cancel; also ensures slow performance can't equal no progression.
2020-02-14 23:16:44 -05:00
Thomas Harte
109d072cb6
Avoids trying to paper over huge gaps in running time. Also attempts to improve SDL shutdown reliability.
2020-02-12 23:47:04 -05:00
Thomas Harte
0b0a7e241b
Factors out the stuff of time warping.
2020-02-09 22:11:06 -05:00
Thomas Harte
2ea1e059a8
Softens swings in emulated machine speed.
2020-02-09 16:34:13 -05:00
Thomas Harte
dac217c98c
Defers starting the macOS audio queue, and attempts to restart it upon packet loss.
...
Hopefully forever to vanish permanent audio loss?
2020-02-08 22:08:27 -05:00
Thomas Harte
c26c8992ae
Reintroduces joystick support; eliminates CSBestEffortUpdater.
2020-02-08 21:27:04 -05:00
Thomas Harte
b76a5870b3
Moves drawing into the next timer tick after retrace if sync locked.
...
... which should mean it occurs within 1/600th of a second of announced retrace, which I assume always will be less than the retrace period. So: does the frame buffer update during retrace.
This should completely eliminate tearing for machines that can be synced to the native output rate.
2020-02-08 18:07:13 -05:00
Thomas Harte
7c0f3bb237
Gets to slightly adjusting execution speed and matching up respective vertical syncs.
...
I probably still need to move the ->draw inline.
2020-02-08 18:01:48 -05:00
Thomas Harte
f615d096ca
Switch to obtaining refresh periods ephemerally.
...
Which simplifies the necessary delegate protocol.
2020-02-08 15:03:18 -05:00
Thomas Harte
09132306e4
Removes two temporary debugging steps.
2020-02-06 23:35:23 -05:00
Thomas Harte
f95b07efea
Continues edging towards raster racing and/or time warping.
2020-02-06 23:35:03 -05:00
Thomas Harte
14d976eecb
Starts towards an implementation of time warping.
2020-02-04 23:08:54 -05:00
Thomas Harte
e1cbad0b6d
Ensures new displayLinkDelegates get a nudge with the initial display link.
2020-02-04 23:08:25 -05:00
Thomas Harte
e7410b8ed8
Uses objective clock for updates.
2020-02-04 22:24:54 -05:00
Thomas Harte
01fd1b1a2e
Pulls out ticks as a macro constant.
...
For playing.
2020-02-03 22:44:39 -05:00
Thomas Harte
96769c52f6
Prevents an endless queue of backlogged updates.
2020-02-03 22:08:07 -05:00
Thomas Harte
cf9729c74f
Takes a first shot at running OpenGL work throughout a frame.
...
Rather than en masse at the end. But it seems I've been lazy with my threading. Work to do!
2020-02-03 21:58:29 -05:00
Thomas Harte
0f2783075f
Moves responsibility for timed updates to CSMachine, which gives the CSHighPrecisionTimer a shot.
2020-02-02 21:39:20 -05:00
Thomas Harte
256f4a6679
Fixes -invalidate: cancel the dispatch source, don't just suspend it, and wait until that is done.
2020-02-02 21:29:22 -05:00
Thomas Harte
4766ec55fe
Documents units.
2020-01-28 23:23:51 -05:00
Thomas Harte
7316a3aa88
Merge branch 'master' into FinalOverride
2020-01-26 23:42:25 -05:00
Thomas Harte
52e49439a6
Recreates display link upon a screen change.
...
Different screens may have different refresh rates, and I can find no guarantees about how Apple handles that.
2020-01-26 23:23:33 -05:00
Thomas Harte
6bcdd3177d
Ensures that a change of screen issues a reshape
. Just in case.
...
Thereby resolves display mis-sizing when dragging from a Retina display to a regular one, or vice versa.
2020-01-26 18:04:25 -05:00