1313// -----------------------------------------------------------------------------
1414Preferences::Preferences () : settings_(" Scientific Computing and Imaging Institute" , " ShapeWorksStudio" ) {
1515 settings_.setFallbacksEnabled (false );
16+ update_threads ();
1617}
1718
1819// -----------------------------------------------------------------------------
@@ -47,7 +48,10 @@ void Preferences::set_cache_enabled(bool value) { settings_.setValue("Studio/cac
4748bool Preferences::get_parallel_enabled () { return settings_.value (" Studio/parallel_enabled" , true ).toBool (); }
4849
4950// -----------------------------------------------------------------------------
50- void Preferences::set_parallel_enabled (bool value) { settings_.setValue (" Studio/parallel_enabled" , value); }
51+ void Preferences::set_parallel_enabled (bool value) {
52+ settings_.setValue (" Studio/parallel_enabled" , value);
53+ update_threads ();
54+ }
5155
5256// -----------------------------------------------------------------------------
5357int Preferences::get_memory_cache_percent () { return settings_.value (" Studio/memory_cache_percent" , 25 ).toInt (); }
@@ -61,7 +65,10 @@ int Preferences::get_num_threads() {
6165}
6266
6367// -----------------------------------------------------------------------------
64- void Preferences::set_num_threads (int num_threads) { settings_.setValue (" Studio/num_threads" , num_threads); }
68+ void Preferences::set_num_threads (int num_threads) {
69+ settings_.setValue (" Studio/num_threads" , num_threads);
70+ update_threads ();
71+ }
6572
6673// -----------------------------------------------------------------------------
6774float Preferences::get_glyph_size () { return settings_.value (" Project/glyph_size" , 5.0 ).toFloat (); }
@@ -325,32 +332,48 @@ void Preferences::update_recent_files() {
325332 recent_paths_ = no_dupe_paths;
326333}
327334
335+ // -----------------------------------------------------------------------------
336+ void Preferences::update_threads () {
337+ int num_threads = get_parallel_enabled () ? get_num_threads () : 1 ;
338+ setenv (" TBB_NUM_THREADS" , std::to_string (num_threads).c_str (), 1 );
339+ }
340+
328341// -----------------------------------------------------------------------------
329342bool Preferences::get_auto_update_check () { return settings_.value (" General/auto_update_check" , true ).toBool (); }
330343
331344// -----------------------------------------------------------------------------
332345void Preferences::set_auto_update_check (bool enabled) { settings_.setValue (" General/auto_update_check" , enabled); }
333346
347+ // -----------------------------------------------------------------------------
334348QDateTime Preferences::get_update_snooze_until () {
335349 return settings_.value (" General/update_snooze_until" , QDateTime ()).toDateTime ();
336350}
337351
352+ // -----------------------------------------------------------------------------
338353void Preferences::set_update_snooze_until (QDateTime date) { settings_.setValue (" General/update_snooze_until" , date); }
339354
355+ // -----------------------------------------------------------------------------
340356QString Preferences::get_device_id () {
341357 QString id = settings_.value (" General/device_id" , QUuid::createUuid ().toString ()).toString ();
342358 settings_.setValue (" General/device_id" , id);
343359 return id;
344360}
345361
362+ // -----------------------------------------------------------------------------
346363bool Preferences::get_telemetry_enabled () { return settings_.value (" General/telemetry_enabled" , true ).toBool (); }
364+ // -----------------------------------------------------------------------------
347365void Preferences::set_telemetry_enabled (bool enabled) { settings_.setValue (" General/telemetry_enabled" , enabled); }
366+ // -----------------------------------------------------------------------------
348367bool Preferences::get_telemetry_asked () { return settings_.value (" General/telemetry_asked" , false ).toBool (); }
368+ // -----------------------------------------------------------------------------
349369void Preferences::set_telemetry_asked (bool asked) { settings_.setValue (" General/telemetry_asked" , asked); }
350370
371+ // -----------------------------------------------------------------------------
351372QStringList Preferences::get_pending_telemetry_events () {
352373 return settings_.value (" Telemetry/pending_events" ).toStringList ();
353374}
375+
376+ // -----------------------------------------------------------------------------
354377void Preferences::set_pending_telemetry_events (QStringList events) {
355378 settings_.setValue (" Telemetry/pending_events" , events);
356379}
0 commit comments