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

    • nbohr1more

      Was checking out old translation packs and decided to fire up TDM 1.07. Rightful Property with sub-20 FPS areas yay! ( same areas run at 180FPS with cranked eye candy on 2.12 )
      · 2 replies
    • taffernicus

      i am so euphoric to see new FMs keep coming out and I am keen to try it out in my leisure time, then suddenly my PC is spouting a couple of S.M.A.R.T errors...
      tbf i cannot afford myself to miss my network emulator image file&progress, important ebooks, hyper-v checkpoint & hyper-v export and the precious thief & TDM gamesaves. Don't fall yourself into & lay your hands on crappy SSD
       
      · 3 replies
    • 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.
      · 7 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
×
×
  • Create New...