[med-svn] [SCM] aghermann branch, master, updated. 65add7a81ffcf60b3e754aadd631a766286c9c6a
Andrei Zavada
johnhommer at gmail.com
Sun Apr 7 16:50:54 UTC 2013
The following commit has been merged in the master branch:
commit bf74b77edac4a3e346d920a7c7be3518d9128f6c
Author: Andrei Zavada <johnhommer at gmail.com>
Date: Sun Apr 7 02:46:11 2013 +0300
probe profile regeneration, make main window busy when it needs to happen
diff --git a/src/expdesign/profile.hh b/src/expdesign/profile.hh
index bb27606..0771e9d 100644
--- a/src/expdesign/profile.hh
+++ b/src/expdesign/profile.hh
@@ -36,6 +36,7 @@ class CProfile
create_timeline();
}
void create_timeline();
+ bool need_compute( const SProfileParamSet&);
const SProfileParamSet& P() const
{ return *this; }
diff --git a/src/expdesign/recording.cc b/src/expdesign/recording.cc
index ea43687..3a17112 100644
--- a/src/expdesign/recording.cc
+++ b/src/expdesign/recording.cc
@@ -238,6 +238,16 @@ CProfile (CProfile&& rv)
+bool
+agh::CProfile::
+need_compute( const SProfileParamSet& P)
+{
+ for ( auto Mi = _mm_list.begin(); Mi != _mm_list.end(); ++Mi )
+ if ( (*Mi)->need_compute( P) )
+ return true;
+ return false;
+}
+
void
agh::CProfile::
diff --git a/src/expdesign/recording.hh b/src/expdesign/recording.hh
index e416809..a0997d3 100644
--- a/src/expdesign/recording.hh
+++ b/src/expdesign/recording.hh
@@ -240,6 +240,21 @@ class CRecording {
}
}
+ bool
+ need_compute( const SProfileParamSet& P)
+ {
+ switch ( P.metric ) {
+ case metrics::TType::psd:
+ return psd_profile.need_compute();
+ case metrics::TType::swu:
+ return swu_profile.need_compute();
+ case metrics::TType::mc:
+ return mc_profile.need_compute();
+ default:
+ throw runtime_error ("What metric?");
+ }
+ }
+
metrics::psd::CProfile psd_profile;
metrics::swu::CProfile swu_profile;
metrics::mc::CProfile mc_profile;
diff --git a/src/metrics/page-metrics-base.cc b/src/metrics/page-metrics-base.cc
index 5c5f165..d7aab1a 100644
--- a/src/metrics/page-metrics-base.cc
+++ b/src/metrics/page-metrics-base.cc
@@ -137,6 +137,26 @@ compute( const SPPack& req_params)
return retval;
}
+bool
+metrics::CProfile::
+need_compute( const SPPack& req_params)
+{
+ auto req_signature = _using_F().dirty_signature( _using_sig_no);
+ if ( have_data()
+ and req_signature == _signature_when_mirrored
+ and Pp.same_as(req_params) )
+ return false;
+
+ auto old_mirror = mirror_fname();
+ Pp.make_same( req_params);
+ _signature_when_mirrored = req_signature;
+ auto new_mirror = mirror_fname();
+
+ bool got_it = (mirror_back( new_mirror) == 0);
+
+ return not got_it;
+}
+
int
diff --git a/src/metrics/page-metrics-base.hh b/src/metrics/page-metrics-base.hh
index 4598e9f..2a315d8 100644
--- a/src/metrics/page-metrics-base.hh
+++ b/src/metrics/page-metrics-base.hh
@@ -155,6 +155,12 @@ class CProfile {
{
return compute( Pp);
}
+ bool need_compute( const SPPack&); // not const because it does mirror_back
+ bool need_compute()
+ {
+ return need_compute( Pp);
+ }
+
protected:
virtual int go_compute() = 0;
diff --git a/src/ui/mw/mw_cb.cc b/src/ui/mw/mw_cb.cc
index 142861e..80c97ca 100644
--- a/src/ui/mw/mw_cb.cc
+++ b/src/ui/mw/mw_cb.cc
@@ -124,12 +124,20 @@ eMsmtProfileType_changed_cb( GtkComboBox* b, gpointer userdata)
break;
}
-// aghui::SBusyBlock bb (ED.wMainWindow);
auto params = ED.make_active_profile_paramset();
// don't let it throw on insufficiently scored recordings
params.req_percent_scored = 0.;
params.swa_laden_pages_before_SWA_0 = 0u;
+ aghui::SBusyBlock *bb = nullptr;
+ for ( auto &G : ED.groups )
+ for ( auto &J : G )
+ if ( J.cprofile and J.cprofile->need_compute( params) ) {
+ bb = new aghui::SBusyBlock (ED.wMainWindow);
+ goto proceed;
+ }
+proceed:
+
for ( auto &G : ED.groups )
for ( auto &J : G )
if ( J.cprofile )
@@ -142,6 +150,9 @@ eMsmtProfileType_changed_cb( GtkComboBox* b, gpointer userdata)
ED.adjust_op_freq_spinbuttons();
gtk_widget_queue_draw( (GtkWidget*)ED.cMeasurements);
+
+ if ( bb )
+ delete bb;
}
--
Sleep experiment manager
More information about the debian-med-commit
mailing list