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
f615d096ca
Switch to obtaining refresh periods ephemerally.
...
Which simplifies the necessary delegate protocol.
2020-02-08 15:03:18 -05:00
Thomas Harte
f95b07efea
Continues edging towards raster racing and/or time warping.
2020-02-06 23:35:03 -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
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
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
Thomas Harte
7112f0336c
Rationalises protocol for application-level event theft.
2019-09-24 22:31:20 -04:00
Thomas Harte
114f81941e
Completes the wiring necessary for capture of the command key.
...
At least when coupled with mouse capture.
2019-09-22 13:53:38 -04:00
Thomas Harte
8f88addf9f
Establishes an interface for requesting shortcut theft. Not yet implemented.
2019-09-22 13:15:35 -04:00
Thomas Harte
f45de5b87a
Adds how-to-release-the-mouse instructions for Cocoa.
2019-08-02 17:07:51 -04:00
Thomas Harte
9f0cde3d69
Improves mouse capture behaviour.
2019-07-11 22:56:08 -04:00
Thomas Harte
387be4a0a6
Ensures mouse button presses propagate correctly.
...
Beyond the one that initiates mouse capture, that is.
2019-07-02 16:57:51 -04:00
Thomas Harte
39aae34323
Avoids multiple calls to -[NSCursor hide] and -unhide.
...
Those are reference counted.
2019-06-13 13:39:35 -04:00
Thomas Harte
15c38e2f15
Adds the option for mouse capture.
2019-06-11 16:30:53 -04:00
Thomas Harte
69a2a133d5
Performs basic migration to Xcode 10.2 — project settings, the one new warning, etc.
2019-03-26 19:47:41 -04:00
Thomas Harte
42997dcb80
Switches brace style, to bring this into line with other source files.
2019-03-06 21:54:21 -05:00
Thomas Harte
0ace189e38
Takes a basic stab at mouse cursor hiding.
2019-03-06 21:49:50 -05:00
Thomas Harte
34047fa60a
Reintroduces proper locking of the OpenGL context in macOS.
2019-03-03 14:49:20 -05:00
Thomas Harte
bee0d09877
Splits display update and draw functions.
...
On the Mac, draw is now called without an update for resizing events, and
anything else requested by AppKit. In all other cases — including from
the SDL version — both are called as if they were still a single function.
2019-03-02 19:33:28 -05:00
Thomas Harte
f12d734957
Disables multisampling, since there's no way it's being helpful.
2018-11-19 23:36:29 -05:00
Thomas Harte
0b771ce61a
Removes all instances of the copyright symbol.
2018-05-13 15:19:52 -04:00
Thomas Harte
3747d96b22
Corrects Mac paste pathway.
...
Also updates documentation around CSOpenGLView.
2018-05-13 11:12:03 -04:00
Thomas Harte
29b5ccc767
Removes redundant logging on the Mac.
2017-11-19 18:05:39 -05:00
Thomas Harte
77548d14db
Ensures self.bounds and -convertSizeToBacking: are called only on the main queue.
2017-09-20 19:59:34 -04:00
Thomas Harte
f68565a33f
Split the static analyser functionality so that it's possible just to ask for the set of media implied by a particular file. Extended ConfigurationTarget so that media alone can be pushed to a machine.
2017-08-17 10:48:29 -04:00
Thomas Harte
2b5d0877a8
Adjusted parameter name to match documentation. I think it's a carry-over from before I was passing the whole event along.
2017-07-21 21:27:50 -04:00
Thomas Harte
a86a6367b5
Slightly shuffled to avoid a race condition on the best-effort updater.
2017-02-11 13:17:11 -05:00
Thomas Harte
097a9caa95
Delegates are all nullable, naturally.
2016-06-23 09:37:49 -04:00
Thomas Harte
1921a6c469
Rewired the existing cause-an-update route from the OpenGLView through the best-effort updater.
2016-06-16 18:19:23 -04:00
Thomas Harte
68a8851c52
Increased parallelism, allowing a simplification in the GL view.
2016-06-02 22:29:09 -04:00
Thomas Harte
e3b95b8d2b
Back to asynchronous updates and drawing, to try to improve guarantees on audio latency; experimenting with whether other parts of the approach are fundamentally flawed; added a broad-phase for scheduled updates on the 2600.
2016-06-02 21:22:55 -04:00
Thomas Harte
11073daee1
Issues appear to be around timing generally. Working on it.
2016-06-02 20:15:48 -04:00
Thomas Harte
40600b4bcb
Made sprite placement consistent at least. Not necessarily yet correct.
2016-05-18 22:07:24 -04:00
Thomas Harte
3765c5fbb5
Fixed error that would prevent an interrupting frame from ever being drawn.
2016-05-18 21:45:35 -04:00
Thomas Harte
ddfc9910e5
Sought to draw in a standard serial arrangement as and when bandwidth allows it.
2016-05-09 07:17:12 -04:00
Thomas Harte
9c89b668ae
Made further attempts to improve synchronisation and interrelated timing between display and machine update.
2016-04-20 22:35:46 -04:00
Thomas Harte
104f44f27f
Attempted to improve deinterlacing, gave the CRT full control over blend mode, switched back to 2000000Mhz audio.
2016-04-14 22:20:47 -04:00
Thomas Harte
fd1f6a7e1f
Expanded on thinking.
2016-04-06 19:35:53 -04:00
Thomas Harte
e885438363
The penny has finally dropped that I can drive the CPU stuff in a manner completely decoupled from the GPU stuff. For much improved parallelisation.
2016-04-06 19:34:34 -04:00
Thomas Harte
4595741ab0
Made an attempt not to interrupt the display link queue too much when emulation is running slowly.
2016-04-04 20:22:33 -04:00
Thomas Harte
902017a962
Fixes: drop any processing backlog, try not to allow an Electron document to close mid-draw, perform a frame grab even if the emulated machine is over-processing, really really don't create a CRT until it's safe.
2016-03-20 18:42:37 -04:00
Thomas Harte
eabc382540
Fixed: of course I can't rely on the pointer to CVTimeStamp not becoming dangling during a queue jump.
2016-03-19 23:02:42 -04:00
Thomas Harte
4c5d66c317
Made sure GL context isn't activated until it's locked.
2016-03-19 22:54:56 -04:00
Thomas Harte
a546277f88
Added the simplest mechanism to decouple emulation from the display link queue.
2016-03-19 22:53:37 -04:00
Thomas Harte
9da7716c72
Attempted to simplify threading, thereby allowing machines to be constructed within a valid GL context, and started adding appropriate GL syncs. Which all oddly drops everything to a negligible FPS. Investigation will follow.
2016-03-19 22:46:17 -04:00
Thomas Harte
bb0cd89574
Got explicit about threading guarantees.
2016-03-13 13:38:03 -04:00
Thomas Harte
41c09f8c3f
Renamed CSCathodeRayView to CSOpenGLView as it no longer has any CRT-related responsibilities. It just does the GL and manages a serial dispatch queue.
2016-03-05 14:45:09 -05:00
Thomas Harte
95efeb1d56
Ensured all delegate and responder delegate messages occur on the same queue.
2016-03-05 14:35:47 -05:00
Thomas Harte
c754a6e45a
Decoupled execution speed and frame rate; cleaned up.
2016-03-03 22:12:31 -05:00