Fix up another deadlock. Tidy tests slightly.
authorCarl Hetherington <cth@carlh.net>
Fri, 26 Oct 2012 15:41:06 +0000 (16:41 +0100)
committerCarl Hetherington <cth@carlh.net>
Fri, 26 Oct 2012 15:41:06 +0000 (16:41 +0100)
src/lib/film.cc
test/test.cc
windows/installer.nsi.in [deleted file]

index 81de2b518c960fac35ee3d4ae849333c50d40964..9c351a64df9f344090088da2f4038cc31f9f27fc 100644 (file)
@@ -607,6 +607,7 @@ Film::thumb_file_for_frame (int n) const
        return thumb_base_for_frame(n) + ".png";
 }
 
+/** Must not be called with the _state_mutex locked */
 string
 Film::thumb_base (int n) const
 {
@@ -616,8 +617,6 @@ Film::thumb_base (int n) const
 string
 Film::thumb_base_for_frame (int n) const
 {
-       boost::mutex::scoped_lock lm (_state_mutex);
-
        stringstream s;
        s.width (8);
        s << setfill('0') << n;
@@ -631,6 +630,8 @@ Film::thumb_base_for_frame (int n) const
 
 /** @param n A thumb index.
  *  @return The frame within the Film that it is for.
+ *
+ *  Must not be called with the _state_mutex locked.
  */
 int
 Film::thumb_frame (int n) const
index cf09a7e4aec683baccec078c453abbe28dce454e..af5c1f501902d1b0049b19e8efad3b3e425c35d0 100644 (file)
@@ -59,18 +59,28 @@ setup_test_config ()
        Config::instance()->set_server_port (61920);
 }
 
+shared_ptr<Film>
+new_test_film (string name)
+{
+       string const d = String::compose ("build/test/%1", name);
+       if (boost::filesystem::exists (d)) {
+               boost::filesystem::remove_all (d);
+       }
+       return shared_ptr<Film> (new Film (d, false));
+}
+
 BOOST_AUTO_TEST_CASE (film_metadata_test)
 {
        dvdomatic_setup ();
        setup_test_config ();
-       
-       string const test_film = "build/test/film";
+
+       string const test_film = "build/test/film_metadata_test";
        
        if (boost::filesystem::exists (test_film)) {
                boost::filesystem::remove_all (test_film);
        }
 
-       BOOST_CHECK_THROW (new Film ("build/test/film", true), OpenFileError);
+       BOOST_CHECK_THROW (new Film (test_film, true), OpenFileError);
        
        shared_ptr<Film> f (new Film (test_film, false));
        BOOST_CHECK (f->format() == 0);
@@ -262,7 +272,7 @@ BOOST_AUTO_TEST_CASE (md5_digest_test)
 
 BOOST_AUTO_TEST_CASE (paths_test)
 {
-       shared_ptr<Film> f (new Film ("build/test/film4", false));
+       shared_ptr<Film> f = new_test_film ("paths_test");
        f->set_directory ("build/test/a/b/c/d/e");
        vector<int> thumbs;
        thumbs.push_back (42);
@@ -360,13 +370,7 @@ BOOST_AUTO_TEST_CASE (client_server_test)
 
 BOOST_AUTO_TEST_CASE (make_dcp_test)
 {
-       string const test_film = "build/test/film2";
-       
-       if (boost::filesystem::exists (test_film)) {
-               boost::filesystem::remove_all (test_film);
-       }
-       
-       shared_ptr<Film> film (new Film (test_film, false));
+       shared_ptr<Film> film = new_test_film ("make_dcp_test");
        film->set_name ("test_film2");
        film->set_content ("../../../test/test.mp4");
        film->set_format (Format::from_nickname ("Flat"));
@@ -382,13 +386,7 @@ BOOST_AUTO_TEST_CASE (make_dcp_test)
 
 BOOST_AUTO_TEST_CASE (make_dcp_with_range_test)
 {
-       string const test_film = "build/test/film3";
-       
-       if (boost::filesystem::exists (test_film)) {
-               boost::filesystem::remove_all (test_film);
-       }
-       
-       shared_ptr<Film> film (new Film (test_film, false));
+       shared_ptr<Film> film = new_test_film ("make_dcp_with_range_test");
        film->set_name ("test_film3");
        film->set_content ("../../../test/test.mp4");
        film->examine_content ();
@@ -406,7 +404,7 @@ BOOST_AUTO_TEST_CASE (make_dcp_with_range_test)
 
 BOOST_AUTO_TEST_CASE (audio_sampling_rate_test)
 {
-       shared_ptr<Film> f (new Film ("build/test/test_film5", false));
+       shared_ptr<Film> f = new_test_film ("audio_sampling_rate_test");
        f->set_frames_per_second (24);
 
        f->set_audio_sample_rate (48000);
diff --git a/windows/installer.nsi.in b/windows/installer.nsi.in
deleted file mode 100644 (file)
index 6bb5344..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-!include "MUI2.nsh"
-Name "DVD-o-matic"
-
-RequestExecutionLevel admin
-
-outFile "DVD-o-matic @version@ @bits@-bit Installer.exe"
-!define MUI_ICON "%resources%/dvdomatic.ico"
-!define MUI_UNICON "%resources%/dvdomatic.ico"
-!define MUI_SPECIALBITMAP "%resources%/dvdomatic.bmp"
-
-InstallDir "$PROGRAMFILES\DVD-o-matic"
-
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro MUI_PAGE_LICENSE "../../COPYING"
-!insertmacro MUI_PAGE_DIRECTORY
-!insertmacro MUI_PAGE_INSTFILES
-!insertmacro MUI_PAGE_FINISH
-
-!insertmacro MUI_UNPAGE_WELCOME
-!insertmacro MUI_UNPAGE_CONFIRM
-!insertmacro MUI_UNPAGE_INSTFILES
-!insertmacro MUI_UNPAGE_FINISH
-!insertmacro MUI_LANGUAGE "English"
-
-Section "install" "Installation info"
-SetOutPath "$INSTDIR\bin"
-
-File "%deps%/bin/asdcp-libdcp.dll"
-File "%deps%/bin/avcodec-54.dll"
-File "%deps%/bin/avfilter-3.dll"
-File "%deps%/bin/avformat-54.dll"
-File "%deps%/bin/avutil-51.dll"
-File "%deps%/bin/dcp.dll"
-File "%deps%/bin/intl.dll"
-File "%deps%/bin/kumu-libdcp.dll"
-File "%deps%/bin/libboost_chrono-mt.dll"
-File "%deps%/bin/libboost_filesystem-mt.dll"
-File "%deps%/bin/libboost_system-mt.dll"
-File "%deps%/bin/libboost_thread_win32-mt.dll"
-File "%deps%/bin/libboost_date_time-mt.dll"
-File "%deps%/bin/libeay32.dll"
-File "%deps%/bin/libgcc_s_sjlj-1.dll"
-File "%deps%/bin/libgio-2.0-0.dll"
-File "%deps%/bin/libglib-2.0-0.dll"
-File "%deps%/bin/libgobject-2.0-0.dll"
-File "%deps%/bin/libjpeg-7.dll"
-File "%deps%/bin/libMagick++-5.dll"
-File "%deps%/bin/libMagickCore-5.dll"
-File "%deps%/bin/libMagickWand-5.dll"
-File "%deps%/bin/libopenjpeg-1.dll"
-File "%deps%/bin/libpng14-14.dll"
-File "%deps%/bin/libsigc-2.0-0.dll"
-File "%deps%/bin/libsndfile-1.dll"
-File "%deps%/bin/libssh.dll"
-File "%deps%/bin/libstdc++-6.dll"
-File "%deps%/bin/postproc-52.dll"
-File "%deps%/bin/swresample-0.dll"
-File "%deps%/bin/swscale-2.dll"
-File "%deps%/bin/zlib1.dll"
-File "%deps%/bin/libjpeg-8.dll"
-File "%deps%/bin/wxbase28_gcc_custom.dll"
-File "%deps%/bin/wxmsw28_core_gcc_custom.dll"
-File "%deps%/bin/wxmsw28_adv_gcc_custom.dll"
-File "%deps%/bin/libcairo-2.dll"
-File "%deps%/bin/libfontconfig-1.dll"
-File "%deps%/bin/libexpat-1.dll"
-File "%deps%/bin/freetype6.dll"
-File "%deps%/bin/libgthread-2.0-0.dll"
-File "%deps%/bin/libpango-1.0-0.dll"
-File "%deps%/bin/libgmodule-2.0-0.dll"
-File "%deps%/bin/libpangocairo-1.0-0.dll"
-File "%deps%/bin/libpangoft2-1.0-0.dll"
-File "%deps%/bin/libpangowin32-1.0-0.dll"
-File "%deps%/bin/libtiff3.dll"
-File "%deps%/bin/jpeg62.dll"
-File "%deps%/bin/libglibmm-2.4-1.dll"
-File "%deps%/bin/libxml++-2.6-2.dll"
-File "%deps%/bin/libxml2-2.dll"
-
-File "%binaries%/src/wx/dvdomatic-wx.dll"
-File "%binaries%/src/lib/dvdomatic.dll"
-File "%binaries%/src/tools/dvdomatic.exe"
-File "%binaries%/src/tools/servomatic_cli.exe"
-File "%binaries%/src/tools/servomatic_gui.exe"
-
-SetOutPath "$PROFILE\.magick"
-
-File "%deps%/etc/ImageMagick/delegates.xml"
-
-CreateShortCut "$DESKTOP\DVD-o-matic.lnk" "$INSTDIR\bin\dvdomatic.exe" ""
-CreateShortCut "$DESKTOP\DVD-o-matic encode server.lnk" "$INSTDIR\bin\servomatic_gui.exe" ""
-CreateDirectory "$SMPROGRAMS\DVD-o-matic"
-CreateShortCut "$SMPROGRAMS\DVD-o-matic\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
-CreateShortCut "$SMPROGRAMS\DVD-o-matic\DVD-o-matic.lnk" "$INSTDIR\bin\dvdomatic.exe" "" "$INSTDIR\bin\dvdomatic.exe" 0
-CreateShortCut "$SMPROGRAMS\DVD-o-matic\DVD-o-matic encode server.lnk" "$INSTDIR\bin\servomatic_gui.exe" "" "$INSTDIR\bin\servomatic_gui.exe" 0
-WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DVD-o-matic" "DisplayName" "DVD-o-matic (remove only)"
-WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DVD-o-matic" "UninstallString" "$INSTDIR\Uninstall.exe"
-WriteUninstaller "$INSTDIR\Uninstall.exe"
-SectionEnd
-Section "Uninstall"
-RMDir /r "$INSTDIR\*.*"    
-RMDir "$INSTDIR"
-Delete "$DESKTOP\DVD-o-matic.lnk"
-Delete "$DESKTOP\DVD-o-matic encode server.lnk"
-Delete "$SMPROGRAMS\DVD-o-matic\*.*"
-RmDir  "$SMPROGRAMS\DVD-o-matic"
-DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\DVD-o-matic"
-DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\DVD-o-matic"
-SectionEnd