Thomas Harte
5a729f92c1
Attempts to move the 'Help' menu to the correct place.
2020-07-04 19:19:41 -04:00
Thomas Harte
366793498a
Ensures ScanTargetWidget doesn't eat irrelevant keypresses.
2020-07-04 19:12:34 -04:00
Thomas Harte
cdda3f74ab
Attempts mouse event capture.
2020-07-04 00:29:37 -04:00
Thomas Harte
d97ebae200
Request Qt deprecation warnings.
2020-07-03 23:16:49 -04:00
Thomas Harte
2d5e9bf1bb
Declines to set up audio output if none is available.
2020-07-02 22:58:15 -04:00
Thomas Harte
8bf5ed52ea
Ensures keyboard events are restricted to single windows.
2020-07-02 22:03:12 -04:00
Thomas Harte
b850183a1e
Switches to an alternative to window(), for older Qt support.
2020-07-02 21:53:30 -04:00
Thomas Harte
f7e13356c4
FunctionThreads no longer automatically start.
...
Improvements as a result: audio works in a second machine started in an existing window; there is no audio thread footprint if there is no audio.
2020-07-01 18:55:42 -04:00
Thomas Harte
55cc3089f9
Ensures complete deallocation of the QAudioOutput.
2020-06-30 23:33:41 -04:00
Thomas Harte
a096a09c72
Trusts Qt to supply a refresh rate, and handles retina <-> non-retina window transitions.
2020-06-30 23:03:39 -04:00
Thomas Harte
b9e117cdcf
Centralises window title responsibility.
2020-06-28 23:08:40 -04:00
Thomas Harte
f6e5a2fb04
Resolves duplicative enums.
2020-06-28 22:50:24 -04:00
Thomas Harte
404c35feb5
Implements Atari 2600 switches menu.
2020-06-28 17:57:20 -04:00
Thomas Harte
b5962c58bb
Completes ZX80/81-specific menu.
2020-06-28 16:23:35 -04:00
Thomas Harte
74da762ae1
Starts sketching out the ZX80/81 menu items.
2020-06-28 01:04:32 -04:00
Thomas Harte
d87c840b76
Adds quick load and quick boot options.
...
This should leave only the ZX80/81 and 2600 as special cases.
2020-06-27 17:08:29 -04:00
Thomas Harte
afb835398f
Ensures display selection is preserved in the app settings.
2020-06-27 16:26:39 -04:00
Thomas Harte
6925a04088
Ensures 'Display' menu is removed if machine is closed.
2020-06-26 23:27:14 -04:00
Thomas Harte
a0e534b309
Starts towards offering display-type selection.
2020-06-26 23:04:45 -04:00
Thomas Harte
74d1ca4fa8
Simplifies indentation, correcting flow while there.
2020-06-26 21:16:15 -04:00
Thomas Harte
3c896050fb
Ensures proper output sizeing on HiDPI displays.
2020-06-26 21:14:43 -04:00
Thomas Harte
387500f01a
Implements 'Insert...' menu item.
2020-06-26 18:25:56 -04:00
Thomas Harte
21c41ed4cb
Reduces boilerplate and key repetition.
2020-06-26 00:39:30 -04:00
Thomas Harte
293ab25634
Ensures complete machine picker state is stored.
2020-06-26 00:23:52 -04:00
Thomas Harte
3ddc1a1722
Eliminates hard-coded concept of timer jitter.
2020-06-25 23:59:44 -04:00
Thomas Harte
478d081095
Ensures machines take user-friendly default settings.
2020-06-23 23:27:56 -04:00
Thomas Harte
9d4b49bbb5
Attempts to be more rigorous in vsync prediction.
2020-06-23 22:59:12 -04:00
Thomas Harte
4417f81014
Attempts to set a meaningful window title.
2020-06-22 22:58:58 -04:00
Thomas Harte
b96f7711e3
Corrects attempt at back-to-UI final window SDI behaviour.
...
Maybe it'll turn out to be not what I want, but at least now it works.
2020-06-22 22:36:36 -04:00
Thomas Harte
1875a03757
Plugs a per-window memory leak.
...
While also ensuring proper OpenGL resource destruction.
2020-06-22 20:32:44 -04:00
Thomas Harte
13336b8ad5
Consolidates and disables failed attempt at final-window close behaviour.
2020-06-21 23:52:41 -04:00
Thomas Harte
b17cceaeaf
Tidies up and makes a failing attempt at SDI improvements.
2020-06-21 23:50:18 -04:00
Thomas Harte
782a62585e
Preserves open path between launches.
2020-06-21 19:10:06 -04:00
Thomas Harte
c5d8d9127b
Rejigs ScanTarget relationship from pull to push, so it can be set whenever it is safe.
2020-06-21 18:25:38 -04:00
Thomas Harte
336dffefe0
Ensures changes in the framebuffer are passed onward.
2020-06-21 17:25:21 -04:00
Thomas Harte
e297d4cced
Decouples scan target drawing and lifetime.
2020-06-21 17:20:44 -04:00
Thomas Harte
b052ca5ca2
Switch to Qt-style member naming.
2020-06-21 17:16:11 -04:00
Thomas Harte
68d4d7d10a
Ensures no out-of-bounds access for unlabelled keys.
2020-06-21 17:11:24 -04:00
Thomas Harte
a03211c410
Makes an attempt at the single document interface.
2020-06-21 12:30:18 -04:00
Thomas Harte
1fbb733f7f
Expands upon comment.
2020-06-20 00:05:41 -04:00
Thomas Harte
4f9b3259d5
Adds explicit conversions to qint64
.
2020-06-19 23:12:18 -04:00
Thomas Harte
12ee8e4db4
Ensures audio is not being pumped while the AudioBuffer is being destructed.
2020-06-19 23:09:39 -04:00
Thomas Harte
95e98323c5
Adds missing header for lock_guard and mutex.
2020-06-19 23:09:20 -04:00
Thomas Harte
222c16c5b8
Ensures newly-hidden widgets aren't still in focus.
2020-06-19 22:01:53 -04:00
Thomas Harte
4e83e80962
Goes further in ensuring safe shutdown.
...
Especially if no machine has been started.
2020-06-19 20:17:47 -04:00
Thomas Harte
4fdbe578cc
Wires up all new machine options.
2020-06-18 23:34:37 -04:00
Thomas Harte
ae5fe9225f
Fills in all machine options.
2020-06-18 22:24:45 -04:00
Thomas Harte
327b9051c8
Adds necessary layouts for Apple II type selection.
2020-06-18 20:30:50 -04:00
Thomas Harte
8151c24cf5
Starts the machine-picker side of the interface.
2020-06-18 20:05:46 -04:00
Thomas Harte
ee659095c2
Retains the default window background colour until a machine is running.
2020-06-17 23:16:29 -04:00
Thomas Harte
8c35fe1062
Finally succeeds at making the missingROMsBox resize with the window.
2020-06-17 22:22:15 -04:00
Thomas Harte
9ca6a1031c
Adds an 'about' box and a hypothetical 'New' file option.
2020-06-16 23:15:47 -04:00
Thomas Harte
e8939aada4
Now that this spin blocks at startup, I can use a standard atomic_flag.
2020-06-16 23:12:58 -04:00
Thomas Harte
17bb3dce26
Makes a firmer attempt at enforcing safe shutdown.
2020-06-16 22:33:50 -04:00
Thomas Harte
495024d6fe
Cleans up all redundant lock/unique_guard declarations.
2020-06-15 00:24:10 -04:00
Thomas Harte
902b33d25d
Makes more failing attempts at a clean shutdown.
2020-06-15 00:00:44 -04:00
Thomas Harte
ac732e2e7b
Attempts to ensure clean shutdown.
2020-06-14 23:38:44 -04:00
Thomas Harte
d08ffd6c8b
Makes sure the timer really, really is on a different thread.
...
Thereby allows me substantially to reduce audio latency.
2020-06-14 23:22:00 -04:00
Thomas Harte
79833deeaf
With some attempt at vsync prediction, seeks to smooth audio/video output.
...
There's plenty more work to do here, but hopefully it takes the issue immediately off the table.
2020-06-14 19:26:56 -04:00
Thomas Harte
405e9e7c68
Shunts audio into its own QThread.
...
For the record, this was the first means I found of attempting that which actually seemed to work. A plain QThread, with something `connect`ed to its `started` signal didn't seem to work (perhaps `connect` is smart at thread confinement?), `moveToThread` didn't work on the audio output after the fact, etc.
2020-06-10 22:14:54 -04:00
Thomas Harte
5f13ee7c19
Simplifies AudioBuffer by consolidating logic into writes.
...
This is kind of fiddling in the margins though; I'm having a lot of difficulty determining the semantically-correct way to get Qt not to funnel all activity through a single thread.
2020-06-09 23:56:08 -04:00
Thomas Harte
d9f02aecdf
Adds an additional buffer. To reduce latency. No, really.
...
Specifically: there's no way to guarantee no overbuffering due to the startup race, other than having QAudioOutput obtain data by pull rather than push. But if it's pulling then that implies an extra buffer. And since the sizes it may pull are not explicit, there's guesswork involved there.
So: no extra buffer => uncontrollable risk of over-buffering. Extra buffer => a controllable risk of over-buffering.
2020-06-09 00:01:22 -04:00
Thomas Harte
bcb23d9a15
Attempt to reduce audio latency. Unsuccessfully.
2020-06-08 21:30:35 -04:00
Thomas Harte
d027450502
Consolidates timer/thread ownership for the timer.
2020-06-07 00:31:46 -04:00
Thomas Harte
63ad1290f4
Actually, QIODevice is listed as reentrant. So no need to forward audio.
...
That said, latency is still absurd for some reason.
2020-06-06 23:47:57 -04:00
Thomas Harte
7c7cb61d2f
Corrects missing audio, at the cost of frame rate.
...
I'm now spinning on the ability of QAudioOutput to accept additional data.
2020-06-06 22:35:50 -04:00
Thomas Harte
68b165e244
QIODevice isn't guaranteed thread safe, so use of it is now thread confined.
2020-06-06 21:14:04 -04:00
Thomas Harte
fe1b6812f1
Fixes processing cap and attempts full-rate video output.
...
Audio now seems to be present, though hugely stuttered.
2020-06-06 19:47:35 -04:00
Thomas Harte
378ff39e5e
Makes an unsuccessful attempt at producing audio.
...
On the plus side, it does seem successfully to sniff out an appropriate audio format and to communicate mono/stereo onward.
2020-06-06 19:19:01 -04:00
Thomas Harte
e47cb91223
Pushes rudimentary keyboard input.
2020-06-05 23:06:28 -04:00
Thomas Harte
d62fb16a58
Adds an eventFilter, in order to steal keypresses.
2020-06-05 22:11:17 -04:00
Thomas Harte
235efcb2d4
Attempts to silence asserts, etc, for release builds.
2020-06-04 23:14:51 -04:00
Thomas Harte
a6ada129e8
Adds very low quality, race-condition infested video output.
2020-06-04 22:58:02 -04:00
Thomas Harte
a681576d6c
Adds redraw logic.
...
If you sit around and constantly reeize the window, you can now see that a machine is running.
2020-06-04 22:39:32 -04:00
Thomas Harte
fdc234ed3b
Advances to having a selected machine actually run.
...
Albeit, invisibly.
2020-06-03 23:39:16 -04:00
Thomas Harte
e2ceb77501
Attempts to start updating a started machine.
...
No real progress on graphics output though.
2020-06-03 00:21:37 -04:00
Thomas Harte
11c28357a1
Implements a basic ROM installation loop.
...
Albeit that I need to figure out how layouts work to keep that request view at least centred.
2020-06-02 23:35:01 -04:00
Thomas Harte
ba2a0600dc
Adds a basic Qt ROM fetcher and attempt to create a machine.
2020-06-01 23:14:57 -04:00
Thomas Harte
ab53165b34
Adds note on implementation obstacle.
2020-06-01 22:08:21 -04:00
Thomas Harte
a30723c3d4
Cleans up a little and ensures a safe exit of the timer thread.
2020-05-31 23:58:19 -04:00
Thomas Harte
d64b4fbc26
Adds a Qt timer class. Precision seems to be 'acceptable'.
2020-05-31 23:39:08 -04:00
Thomas Harte
5e0bea9d1c
Adds all header files to the QMake project.
2020-05-30 16:48:52 -04:00
Thomas Harte
0bf7de9d43
Advances to actually completing a build.
...
Many more warnings to iron out, however.
2020-05-30 00:47:43 -04:00
Thomas Harte
267006782f
Starts to add Qt target; resolves many build warnings.
2020-05-30 00:37:06 -04:00