if (format() == 0) {
return 0;
}
-
- return distance (filesystem::directory_iterator (j2k_dir()), filesystem::directory_iterator ());
+
+ int N = 0;
+ for (filesystem::directory_iterator i = filesystem::directory_iterator (j2k_dir ()); i != filesystem::directory_iterator(); ++i) {
+ ++N;
+ this_thread::interruption_point ();
+ }
+
+ return N;
}
#include <vector>
#include <inttypes.h>
#include <boost/thread/mutex.hpp>
+#include <boost/thread.hpp>
#include <sigc++/signal.h>
extern "C" {
#include <libavcodec/avcodec.h>
PropertiesDialog::frames_already_encoded () const
{
stringstream u;
- u << _film->encoded_frames();
+ try {
+ u << _film->encoded_frames ();
+ } catch (thread_interrupted &) {
+ return "";
+ }
+
if (_film->length()) {
u << " (" << (_film->encoded_frames() * 100 / _film->length()) << "%)";
}
ThreadedStaticText::~ThreadedStaticText ()
{
- /* XXX: this is a bit unfortunate */
+ _thread->interrupt ();
_thread->join ();
delete _thread;
}