'reverbedit' aborts
Moderator: GZDoom Developers
Forum rules
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.
Please don't bump threads here if you have a problem - it will often be forgotten about if you do. Instead, make a new thread here.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49056
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
'reverbedit' aborts
I just got this while opening the reverb editor from a fullscreen OpenGL display:
Requested invalid render buffer sizes: screen = -2147483648x-2147483648
Requested invalid render buffer sizes: screen = -2147483648x-2147483648
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49056
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: 'reverbedit' aborts
... and just thinking about this stuff, how about rewriting this as an internal menu? I do not see anything in there that cannot be done easily by ZDoom's own menu code.
Getting rid of this crusty old Windows GUI code might be a good thing - especially getting this working platform independently.
Getting rid of this crusty old Windows GUI code might be a good thing - especially getting this working platform independently.
Re: 'reverbedit' aborts
I fixed the bug. But yeah, seems like that dialog might as well be rendered by gzd itself.
Re: 'reverbedit' aborts
Slightly off-topic, but related -Graf Zahl wrote:Getting rid of this crusty old Windows GUI code might be a good thing - especially getting this working platform independently.
3DGE has been trying to implement an IWAD selector, and Coraline wanted to try it out in WinForms, to which I expressed my disgust for this very reason.
Yes, it's very convenient and Visual Studio even has its own editor for it, it's not cross-platform compatible.
We looked at implementing it in GTK but just getting that set up and working at all seems to be a pain in the ass. It's about 2 hours of finding the right libraries and the right version to compile with, all to grant functionality for about 20 or so lines of code.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49056
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: 'reverbedit' aborts
GTK on Windows is a mess and not recommended. I have no idea why so many libraries that started out in the Linux world are such a clusterfuck to set up. Apparently their makers never ever think about scenarios where someone has to do it manually.
I have lost count how many times I had this fight when trying to integrate some stuff into an Android or iOS app - because just linking in such an external dependency won't do.
I have lost count how many times I had this fight when trying to integrate some stuff into an Android or iOS app - because just linking in such an external dependency won't do.
Re: 'reverbedit' aborts
It looks like the only real workable/flexible solution will be to implement our own GUI code directly inside the application. And I am not sure how much I really want to do that.
Whatever we do, it has to work on Windows, Mac, Linux, as well as Dreamcast.
Whatever we do, it has to work on Windows, Mac, Linux, as well as Dreamcast.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49056
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: 'reverbedit' aborts
I have been doing some research on GUIs that can render to OpenGL but sadly they all forget the most important thing: Keep it simple, i.e. they are just as inconvenient to set up as real GUI libraries and even harder to use, because most just want too much.
Re: 'reverbedit' aborts
How about something like Nuklear? It boasts these features:
- Small codebase (~18kLOC)
- Focus on portability, efficiency and simplicity
- No dependencies (not even the standard library if not wanted)
- Low memory footprint with total memory control if needed or wanted
- Small codebase (~18kLOC)
- Focus on portability, efficiency and simplicity
- No dependencies (not even the standard library if not wanted)
- Low memory footprint with total memory control if needed or wanted
Re: 'reverbedit' aborts
Thank you, Gez and _mental_.
With the urgency of Coraline really wanting the IWAD selector feature, we will be investigating all of those toolkits, I'll be sure to let you guys know if we settle on one of them so that it may help with deciding what direction to go for GZDoom.
With the urgency of Coraline really wanting the IWAD selector feature, we will be investigating all of those toolkits, I'll be sure to let you guys know if we settle on one of them so that it may help with deciding what direction to go for GZDoom.
Re: 'reverbedit' aborts
IWAD selection is a very special thing as it should display full fledged UI without relying on any external resources like fonts or textures.
Source port must carry all these assets with it.
Alternatively it can use underlying operating system UI which in most cases is quite feature rich.
However this requires substantial amount of platform/framework specific code.
Source port must carry all these assets with it.
Alternatively it can use underlying operating system UI which in most cases is quite feature rich.
However this requires substantial amount of platform/framework specific code.
- Chris
- Posts: 2940
- Joined: Thu Jul 17, 2003 12:07 am
- Graphics Processor: ATI/AMD with Vulkan/Metal Support
Re: 'reverbedit' aborts
Just to throw ideas out there (not all of which may be feasible, but I'd be remiss not to mention).
What about Mono? It's pretty easy to get on most Linux distros and Windows pretty much comes with an equivalent. You could have a separate launcher app written in Mono so that the main executable is free of it. Note, I've never worked with Mono before beyond running some apps written in it, and though I realize this is probably a non-option, it's something to think of for handling cross-platform UIs.
Alternatively, Qt seems to be a lot easier to deal with on Windows than GTK and works just fine on Linux too. There's even tools to help create the window layouts visually, rather than having to write them manually in some soft of markup file or in code. This would be my go-to choice for cross-platform UIs that follow the system's windowing look.
The only "slave" GUI lib I've dealt with (one which renders to your surface on-demand and takes manually-supplied input events) is MyGUI. That's not been the most pleasant thing to deal with in my experience, but it has been relatively flexible in making it look as you want. It's also more for an in-game UI rather than a front-end UI, so may not be very relevant for a pre-game IWAD selector.
What about Mono? It's pretty easy to get on most Linux distros and Windows pretty much comes with an equivalent. You could have a separate launcher app written in Mono so that the main executable is free of it. Note, I've never worked with Mono before beyond running some apps written in it, and though I realize this is probably a non-option, it's something to think of for handling cross-platform UIs.
Alternatively, Qt seems to be a lot easier to deal with on Windows than GTK and works just fine on Linux too. There's even tools to help create the window layouts visually, rather than having to write them manually in some soft of markup file or in code. This would be my go-to choice for cross-platform UIs that follow the system's windowing look.
The only "slave" GUI lib I've dealt with (one which renders to your surface on-demand and takes manually-supplied input events) is MyGUI. That's not been the most pleasant thing to deal with in my experience, but it has been relatively flexible in making it look as you want. It's also more for an in-game UI rather than a front-end UI, so may not be very relevant for a pre-game IWAD selector.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49056
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: 'reverbedit' aborts
Mono/.NET is out because it's an isolated environment.
Qt is out due to binary size which is wayyyy too large for our purposes. Same for wxWidgets. Both also have the severe disadvantage that they want to drive the app themselves instead of being driven from the outside.
Qt is out due to binary size which is wayyyy too large for our purposes. Same for wxWidgets. Both also have the severe disadvantage that they want to drive the app themselves instead of being driven from the outside.