From: <hug...@li...> - 2011-05-10 11:50:54
|
branch: details: http://hugin.hg.sourceforge.net/hgweb/hugin/hugin/hgrepo/h/hu/hugin/hugin/rev/085b637a788d changeset: 5203:085b637a788d user: Yuv Mobile <yu...@us...> date: Tue May 10 07:50:49 2011 -0400 description: Fixes 4096 image cache memory limit on Windows by working around wxWidgets DWORD/QWORD limitation (part 2 of bug#761231) diffstat: src/hugin1/hugin/PreferencesDialog.cpp | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diffs (42 lines): diff -r 803220640024 -r 085b637a788d src/hugin1/hugin/PreferencesDialog.cpp --- a/src/hugin1/hugin/PreferencesDialog.cpp Mon May 09 22:32:30 2011 -0400 +++ b/src/hugin1/hugin/PreferencesDialog.cpp Tue May 10 07:50:49 2011 -0400 @@ -408,6 +408,12 @@ if (panel==0 || panel == 1) { // memory setting unsigned long mem = cfg->Read(wxT("/ImageCache/UpperBound"), HUGIN_IMGCACHE_UPPERBOUND); +#ifdef __WXMSW__ + unsigned long mem_high = cfg->Read(wxT("/ImageCache/UpperBoundHigh"), 0); + if (mem_high > 0) { + mem = (mem_high << 32) + mem; + } +#endif MY_SPIN_VAL("prefs_cache_UpperBound", mem >> 20); // number of threads @@ -626,6 +632,14 @@ if (noteb->GetSelection() == 0) { // MISC // cache +/* + * special treatment for windows not necessary here since we know the value of + * HUGIN_IMGCACHE_UPPERBOUND must fit into 32bit to be compatible with 32bit systems. + * However, just as a reminder: +#ifdef __WXMSW__ + cfg->Write(wxT("/ImageCache/UpperBoundHigh"), HUGIN_IMGCACHE_UPPERBOUND >> 32); +#endif +*/ cfg->Write(wxT("/ImageCache/UpperBound"), HUGIN_IMGCACHE_UPPERBOUND); // number of threads int cpucount = wxThread::GetCPUCount(); @@ -761,6 +775,10 @@ ///// /// MISC // cache +#ifdef __WXMSW__ + // shifting only 12 bits rights: 32-20=12 and the prefs_cache_UpperBound is in GB + cfg->Write(wxT("/ImageCache/UpperBoundHigh"), (long) MY_G_SPIN_VAL("prefs_cache_UpperBound") >> 12); +#endif cfg->Write(wxT("/ImageCache/UpperBound"), (long) MY_G_SPIN_VAL("prefs_cache_UpperBound") << 20); // number of threads cfg->Write(wxT("/Nona/NumberOfThreads"), MY_G_SPIN_VAL("prefs_nona_NumberOfThreads")); |