Jump to content
The Dark Mod Forums

Threading in DarkRadiant


Recommended Posts

I appear to have successfully implemented the use of threads when displaying the Entity Class Chooser, so that the dialog appears immediately without having to wait for the entity classes to be loaded. This is better practice from a UI point of view (always provide immediate feedback), and could be used in several other places where lengthy operations are performed.

 

greebo, are you happy for me to commit these changes? The reason I ask is that threading is the sort of issue that can be both platform-dependent and tricky to debug, so I don't want to dump a whole load of Windows breakage on you if you are not prepared for it.

Link to comment
Share on other sites

If you're using boost::threads then by all means go for it.

 

Glib::Thread actually, which is the same basic principle (platform-independent thread functionality), but using the sigc++ signals and slots rather than boost::functions.

 

I'll commit to the trunk for now then, and the change can always be backed out or put behind #ifdefs if there is a problem — in fact disabling threads would be a one-line change: replacing Glib::Thread::create(...someFunction...) with a direct call to someFunction() itself.

Link to comment
Share on other sites

I'm getting an "An unspecified error has occurred" message when launching the Entity Chooser (and DarkRadiant is aborted thereafter), I'll have to check what the heck that means.

 

Well, that sucks. Could there be some configuration option required to build Glibmm with thread support? I think Boost has something like that.

Link to comment
Share on other sites

I figured it out, luckily I found it quickly after compiling the gtkmm stack from scratch, which gave me the symbols and the call stack. The reason behind the crash was a missing call to g_thread_init(), which I added to main.cpp, and now it's working.

 

It's a nice addition to the EntityClass Chooser, the only thing I noticed is the missing border in the window, it used t have the standard 12px padding.

Link to comment
Share on other sites

I figured it out, luckily I found it quickly after compiling the gtkmm stack from scratch, which gave me the symbols and the call stack. The reason behind the crash was a missing call to g_thread_init(), which I added to main.cpp, and now it's working.

 

Oh yeah, I should have guessed there would be something like that to initialise the thread support. Although it seems that it will not be necessary according to the documentation for the unstable Glibmm build; perhaps it will be done automatically when everything else is initialised.

 

It's a nice addition to the EntityClass Chooser, the only thing I noticed is the missing border in the window, it used t have the standard 12px padding.

 

Oops, I forgot about that when I switched the HBox to a HPaned. It is now restored.

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.
      · 4 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...