17 ProjectSaver (
const Project &project);
19 QFuture<void> save_async (
bool for_backup);
32 void save (
bool is_backup,
bool show_notification,
bool async);
56 PROJECT_COMPRESS_FILE = 0,
57 PROJECT_DECOMPRESS_FILE = 0,
58 PROJECT_COMPRESS_DATA = 1,
59 PROJECT_DECOMPRESS_DATA = 1,
78 const QByteArray &src);
80 static void compress (
84 const QByteArray &src)
89 static void decompress (
93 const QByteArray &src)
108 bool has_unsaved_changes ()
const;
125 fs::path project_file_path_;
127 bool is_backup_ =
false;
130 std::atomic_bool finished_ =
false;
132 bool show_notification_ =
false;
135 bool has_error_ =
false;
143 class SerializeProjectThread final :
public juce::Thread
146 SerializeProjectThread (SaveContext &ctx);
147 ~SerializeProjectThread ()
override;
148 void run ()
override;
160 void set_and_create_next_available_backup_dir ();
170 void cleanup_plugin_state_dirs (
const Project &main_project,
bool is_backup);
178 static bool idle_saved_callback (SaveContext * ctx);
181 const Project &project_;
186 SteadyTimePoint last_successful_autosave_time_;
192 std::binary_semaphore save_sem_{ 1 };
static void compress_or_decompress(bool compress, char **_dest, size_t *_dest_size, CompressionFlag dest_type, const QByteArray &src)
Compresses/decompress a project from a file/data to a file/data.