@Graf and @dpJudas
The way I look at small pieces of code is: What is the overall goal of this particular function or piece of code? And then, I try to find different ways of implementing the same functionality, like I recently did with the
FileLockChecker.
I haven't finished going through the
OpenGL tutorials yet.
I'm thinking it may be possible to pull away small pieces of SlimDX at first, like the timer stuff. However, when it comes to rewriting the larger and more important pieces of code (renderer), I'm thinking of writing small standalone test apps using bits and pieces of GZDB code, along with my own code and test data to ensure things work as expected.
My biggest concern about rewriting the renderer is whether or not it's multi-threaded. WINE's OpenGL-based implementation of D3D9 is quite slow, and the
massive performance boost from
D9VK is certainly a testament to the differences between OpenGL and D3D9.
But that's to come much later. Right now, I think I'm more concerned about putting in a cross-platform alternative to ScintillaNET for Linux. I don't want to replace ScintillaNET on Windows, because that would just unnecessarily hamper the experience for Windows users.
ZZYZX wrote:I'd just remove dependency on DirectX and then it will be super easy to run it under WINE+Mono.
No need to remove dependencies on WinForms... that part, WINE is supporting pretty well. DirectX is the problem.
Rewriting editor in GTK means it starts looking like shit/not working at all on Windows instead.
Mono is completely separate from WINE, and it can use WinForms without WINE. I'm hoping to make GZDB runnable on Mono without WINE. On the other hand, I also haven't been able to compile any Mono GTK app that uses GtkSourceView, so I may have to go with boris' suggestion of using a plain WinForms text editing component rather than Scintilla.
On a tangent, ever since upgrading to (K)ubuntu 18.04, I haven't been able to install .NET Framework 4.6.1 using winetricks (I'm using wine 4.10 from the wine-devel package).
TDRR wrote:Which made me think, what if after DirectX is removed, a .deb package (Along with packages for other distros obviously) with the bare minimum WINE stuff needed to run GZDB, and that WINE doesn't set up env variables so it wouldn't break anything for anyone already with WINE while still letting GZDB run easily even on computers without WINE. Also with this it would be impossible to have a WINE update break GZDB because you can basically decide if the bundled WINE is updated or left like it is for now.
That's pretty much what
Snaps and
Flatpaks are.