Jump to content
The Dark Mod Forums

DarkRadiant 2.0.0 released


Recommended Posts

@OrbWeaver: I'd propose a change to the GroupDialog destructor. Before the owned wxNotebook is destroyed, the GroupDialog should unsubscribe from the page switch event, since the whole instance is in process of going down the drain anyway. Let me know whether I should work on that and push a commit or whether you have time to do it.

Link to comment
Share on other sites

@OrbWeaver: I'd propose a change to the GroupDialog destructor. Before the owned wxNotebook is destroyed, the GroupDialog should unsubscribe from the page switch event, since the whole instance is in process of going down the drain anyway. Let me know whether I should work on that and push a commit or whether you have time to do it.

 

It's definitely something along those lines, since removing the call to removeLayout from the MainFrame's shutdown code stops the crash, but I don't yet understand why, because while the EmbeddedLayout does explicitly remove the "textures" page from the GroupDialog, the implementation uses wxNotebook::DeletePage() which seems to be the correct way to remove a page from a wxNotebook and should not leave it in a broken state when its destructor is called (it would make more sense if we were simply deleting the page without calling DeletePage, since this would result in double deletion).

 

I also wondered if this is a double deletion caused by the fact that GroupDialog is both owned by a shared_ptr (which is visible in the stack trace) and embedded into a parent wx window which will try to delete it as a child widget in the usual fashion. But this doesn't make sense, because (with my local changes) the call to RadiantModule::broadcastShutdownEvent happens in a function called from the main window's wxCloseEvent which happens before the call to wxWindow::Destroy(), not afterwards.

 

In any case, if you think you have any useful quick fixes feel free to make them; otherwise I will look into this but it might take some time as I have to familiarise myself with the wxWidgets mechanics as well as our existing code.

 

EDIT: After re-reading the stack trace I now see what your suggested fix is referring to: the GroupDialog destructor has finished and its parent classes are being destroyed, but the parent window class owns the child wxNodebook which is still connected to the signal handlers in GroupDialog which is already destroyed in C++ terms. So probably what we need to do is tell wxWidgets to destroy/delete the wxNodebook in the GroupDialog destructor rather than waiting for the parent class destructors to do it.

Link to comment
Share on other sites

The fix is in my master branch, does it fix this specific crash on your end?

 

Ah, I was so busy investigating this I forgot to check if you had already committed a fix. My own fix was actually very simple: the GroupDialog now owns a wxWindowPtr to the notebook rather than a raw pointer, which ensures that the notebook is destroyed as soon as the GroupDialog destructor finishes, rather than waiting for the top-down wxWidgets hierarchy to delete it. I had to do this with the toolbars in the TopLevelFrame too for the same reason.

 

I haven't merged your branch yet but I will do so soon since it looks like you've made an important change to the menu systems. I have pushed my changes so far into Github — they are probably not ready for full merging yet (in particular I need to figure out why the camera panel is becoming bigger with each shutdown/restart cycle) but it might be worth checking I haven't introduced any problems on Windows that weren't there already.

Link to comment
Share on other sites

Congratiulations on the 2.0 full release! Good to see there's still some nice development going on with DR! :)

 

But what is this important GTK thingy that makes it a major release? (couldn't get my hands on the new version yet)

"Einen giftigen Trank aus Kräutern und Wurzeln für die närrischen Städter wollen wir brauen." - Text aus einem verlassenen Heidenlager

Link to comment
Share on other sites

The installer on the website wants to create a uninstall entry called DarkRadiant 1.8.1 x64, instead of DarkRadiant 2.0.0 x64

EDIT: Just got a crash.

 

I went from maximized to restored and then pressed the X to close and got this:

 

post-529-0-33286000-1414070052_thumb.png

I always assumed I'd taste like boot leather.

 

Link to comment
Share on other sites

Interesting: http://www.curiousco...aditor-toolset/ (about Prefabs).

 

Would it be something that could be added to DR via Python add-on or would it be something requiring complete re-design of DR ?

 

That sounds awefully like what I'm doing with Swift Mazes ;) Shameless plug: see here: http://forums.thedarkmod.com/topic/14119-procedural-dungeon-crawler-generation-swift-mazes/page__fromsearch__1 and http://www.swift-mazes.com/ :)

"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw (1856 - 1950)

 

"Remember: If the game lets you do it, it's not cheating." -- Xarax

Link to comment
Share on other sites

Thanks for your hard work and congratulations on the release :) going to give this a try right now!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent Status Updates

    • OrbWeaver

      Does anyone actually use the Normalise button in the Surface inspector? Even after looking at the code I'm not quite sure what it's for.
      · 2 replies
    • Ansome

      Turns out my 15th anniversary mission idea has already been done once or twice before! I've been beaten to the punch once again, but I suppose that's to be expected when there's over 170 FMs out there, eh? I'm not complaining though, I love learning new tricks and taking inspiration from past FMs. Best of luck on your own fan missions!
      · 4 replies
    • The Black Arrow

      I wanna play Doom 3, but fhDoom has much better features than dhewm3, yet fhDoom is old, outdated and probably not supported. Damn!
      Makes me think that TDM engine for Doom 3 itself would actually be perfect.
      · 6 replies
    • Petike the Taffer

      Maybe a bit of advice ? In the FM series I'm preparing, the two main characters have the given names Toby and Agnes (it's the protagonist and deuteragonist, respectively), I've been toying with the idea of giving them family names as well, since many of the FM series have named protagonists who have surnames. Toby's from a family who were usually farriers, though he eventually wound up working as a cobbler (this serves as a daylight "front" for his night time thieving). Would it make sense if the man's popularly accepted family name was Farrier ? It's an existing, though less common English surname, and it directly refers to the profession practiced by his relatives. Your suggestions ?
      · 9 replies
    • nbohr1more

      Looks like the "Reverse April Fools" releases were too well hidden. Darkfate still hasn't acknowledge all the new releases. Did you play any of the new April Fools missions?
      · 5 replies
×
×
  • Create New...