don't use shared ptr on projects

Really unnecessary
This commit is contained in:
itsmattkc
2020-11-27 14:24:02 +11:00
parent b178dfa06e
commit f8ceefff6c
17 changed files with 86 additions and 116 deletions
+39 -48
View File
@@ -105,7 +105,6 @@ void Core::DeclareTypesForQt()
qRegisterMetaType<Decoder::RetrieveState>();
qRegisterMetaType<olive::TimeRange>();
qRegisterMetaType<Color>();
qRegisterMetaType<olive::ProjectPtr>();
qRegisterMetaType<olive::AudioVisualWaveform>();
qRegisterMetaType<olive::SampleJob>();
qRegisterMetaType<olive::ShaderJob>();
@@ -263,14 +262,14 @@ void Core::ClearOpenRecentList()
void Core::CreateNewProject()
{
// If we already have an empty/new project, switch to it
foreach (ProjectPtr already_open, open_projects_) {
foreach (Project* already_open, open_projects_) {
if (already_open->is_new()) {
AddOpenProject(already_open);
return;
}
}
AddOpenProject(std::make_shared<Project>());
AddOpenProject(new Project());
}
const bool &Core::snapping() const
@@ -283,17 +282,6 @@ const QStringList &Core::GetRecentProjects() const
return recent_projects_;
}
ProjectPtr Core::GetSharedPtrFromProject(Project *project) const
{
foreach (ProjectPtr p, open_projects_) {
if (p.get() == project) {
return p;
}
}
return nullptr;
}
void Core::SetTool(const Tool::Item &tool)
{
tool_ = tool;
@@ -348,10 +336,10 @@ void Core::DialogPreferencesShow()
void Core::DialogProjectPropertiesShow()
{
ProjectPtr proj = GetActiveProject();
Project* proj = GetActiveProject();
if (proj) {
ProjectPropertiesDialog ppd(proj.get(), main_window_);
ProjectPropertiesDialog ppd(proj, main_window_);
ppd.exec();
} else {
QMessageBox::critical(main_window_,
@@ -407,7 +395,7 @@ void Core::CreateNewFolder()
void Core::CreateNewSequence()
{
ProjectPtr active_project = GetActiveProject();
Project* active_project = GetActiveProject();
if (!active_project) {
QMessageBox::critical(main_window_, tr("Failed to create new sequence"), tr("Failed to find active project"));
@@ -415,7 +403,7 @@ void Core::CreateNewSequence()
}
// Create new sequence
SequencePtr new_sequence = CreateNewSequenceForProject(active_project.get());
SequencePtr new_sequence = CreateNewSequenceForProject(active_project);
// Set all defaults for the sequence
new_sequence->set_default_parameters();
@@ -440,13 +428,13 @@ void Core::CreateNewSequence()
}
}
void Core::AddOpenProject(ProjectPtr p)
void Core::AddOpenProject(Project* p)
{
// Ensure project is not open at the moment
foreach (ProjectPtr already_open, open_projects_) {
foreach (Project* already_open, open_projects_) {
if (already_open == p) {
// Signal UI to switch to this project
emit ProjectOpened(p.get());
emit ProjectOpened(p);
return;
}
}
@@ -456,24 +444,26 @@ void Core::AddOpenProject(ProjectPtr p)
CloseProject(open_projects_.last(), false);
}
connect(p.get(), &Project::ModifiedChanged, this, &Core::ProjectWasModified);
connect(p, &Project::ModifiedChanged, this, &Core::ProjectWasModified);
open_projects_.append(p);
PushRecentlyOpenedProject(p->filename());
emit ProjectOpened(p.get());
emit ProjectOpened(p);
}
void Core::AddOpenProjectFromTask(Task *task)
{
ProjectLoadBaseTask* load_task = static_cast<ProjectLoadBaseTask*>(task);
ProjectPtr project = load_task->GetLoadedProject();
Project* project = load_task->GetLoadedProject();
MainWindowLayoutInfo layout = load_task->GetLoadedLayout();
if (ValidateFootageInLoadedProject(project, load_task->GetFilenameProjectWasSavedAs())) {
AddOpenProject(project);
main_window_->LoadLayout(layout);
} else {
delete project;
}
}
@@ -516,7 +506,7 @@ void Core::ProjectWasModified(bool e)
} else {
// If we just set this project to "not modified", see if all projects are not modified in which case we can hide
// the modified flag
foreach (ProjectPtr open, open_projects_) {
foreach (Project* open, open_projects_) {
if (open->is_modified()) {
main_window_->setWindowModified(true);
return;
@@ -546,7 +536,7 @@ bool Core::StartHeadlessExport()
CLITaskDialog task_dialog(&plm);
if (task_dialog.Run()) {
ProjectPtr p = plm.GetLoadedProject();
std::unique_ptr<Project> p = std::unique_ptr<Project>(plm.GetLoadedProject());
QList<ItemPtr> items = p->get_items_of_type(Item::kSequence);
// Check if this project contains sequences
@@ -696,7 +686,7 @@ void Core::StartGUI(bool full_screen)
}
}
void Core::SaveProjectInternal(ProjectPtr project)
void Core::SaveProjectInternal(Project* project)
{
// Create save manager
Task* psm;
@@ -754,7 +744,7 @@ ViewerOutput *Core::GetSequenceToExport()
void Core::SaveAutorecovery()
{
foreach (ProjectPtr p, open_projects_) {
foreach (Project* p, open_projects_) {
if (!p->has_autorecovery_been_saved()) {
// FIXME: SAVE AN AUTORECOVERY PROJECT
p->set_autorecovery_saved(true);
@@ -764,19 +754,19 @@ void Core::SaveAutorecovery()
void Core::ProjectSaveSucceeded(Task* task)
{
ProjectPtr p = static_cast<ProjectSaveTask*>(task)->GetProject();
Project* p = static_cast<ProjectSaveTask*>(task)->GetProject();
PushRecentlyOpenedProject(p->filename());
p->set_modified(false);
}
ProjectPtr Core::GetActiveProject() const
Project* Core::GetActiveProject() const
{
ProjectPanel* active_project_panel = PanelManager::instance()->MostRecentlyFocused<ProjectPanel>();
if (active_project_panel && active_project_panel->project()) {
return GetSharedPtrFromProject(active_project_panel->project());
return active_project_panel->project();
}
return nullptr;
@@ -834,7 +824,7 @@ QString Core::PasteStringFromClipboard()
bool Core::SaveActiveProject()
{
ProjectPtr active_project = GetActiveProject();
Project* active_project = GetActiveProject();
if (active_project) {
return SaveProject(active_project);
@@ -845,7 +835,7 @@ bool Core::SaveActiveProject()
bool Core::SaveActiveProjectAs()
{
ProjectPtr active_project = GetActiveProject();
Project* active_project = GetActiveProject();
if (active_project) {
return SaveProjectAs(active_project);
@@ -856,7 +846,7 @@ bool Core::SaveActiveProjectAs()
bool Core::SaveAllProjects()
{
foreach (ProjectPtr p, open_projects_) {
foreach (Project* p, open_projects_) {
if (!SaveProject(p)) {
return false;
}
@@ -872,10 +862,10 @@ bool Core::CloseActiveProject()
bool Core::CloseAllExceptActiveProject()
{
ProjectPtr active_proj = GetActiveProject();
QList<ProjectPtr> copy = open_projects_;
Project* active_proj = GetActiveProject();
QList<Project*> copy = open_projects_;
foreach (ProjectPtr p, copy) {
foreach (Project* p, copy) {
if (p != active_proj) {
if (!CloseProject(p, true)) {
return false;
@@ -934,7 +924,7 @@ void Core::SetStartupLocale()
}
}
bool Core::SaveProject(ProjectPtr p)
bool Core::SaveProject(Project* p)
{
if (p->filename().isEmpty()) {
return SaveProjectAs(p);
@@ -945,7 +935,7 @@ bool Core::SaveProject(ProjectPtr p)
}
}
bool Core::SaveProjectAs(ProjectPtr p)
bool Core::SaveProjectAs(Project* p)
{
QFileDialog fd(main_window_, tr("Save Project As"));
@@ -992,7 +982,7 @@ void Core::PushRecentlyOpenedProject(const QString& s)
void Core::OpenProjectInternal(const QString &filename)
{
// See if this project is open already
foreach (ProjectPtr p, open_projects_) {
foreach (Project* p, open_projects_) {
if (p->filename() == filename) {
// This project is already open
AddOpenProject(p);
@@ -1128,13 +1118,13 @@ void Core::OpenProjectFromRecentList(int index)
}
}
bool Core::CloseProject(ProjectPtr p, bool auto_open_new)
bool Core::CloseProject(Project *p, bool auto_open_new)
{
CloseProjectBehavior b = kCloseProjectOnlyOne;
return CloseProject(p, auto_open_new, b);
}
bool Core::CloseProject(ProjectPtr p, bool auto_open_new, CloseProjectBehavior &confirm_behavior)
bool Core::CloseProject(Project* p, bool auto_open_new, CloseProjectBehavior &confirm_behavior)
{
for (int i=0;i<open_projects_.size();i++) {
if (open_projects_.at(i) == p) {
@@ -1202,9 +1192,10 @@ bool Core::CloseProject(ProjectPtr p, bool auto_open_new, CloseProjectBehavior &
// For safety, the undo stack is cleared so no commands try to affect a freed project
undo_stack_.clear();
disconnect(p.get(), &Project::ModifiedChanged, this, &Core::ProjectWasModified);
emit ProjectClosed(p.get());
disconnect(p, &Project::ModifiedChanged, this, &Core::ProjectWasModified);
emit ProjectClosed(p);
open_projects_.removeAt(i);
delete p;
break;
}
}
@@ -1219,12 +1210,12 @@ bool Core::CloseProject(ProjectPtr p, bool auto_open_new, CloseProjectBehavior &
bool Core::CloseAllProjects(bool auto_open_new)
{
QList<ProjectPtr> copy = open_projects_;
QList<Project*> copy = open_projects_;
// See how many projects are modified so we can set "behavior" correctly
// (i.e. whether to show "Yes/No To All" buttons or not)
int modified_count = 0;
foreach (ProjectPtr p, copy) {
foreach (Project* p, copy) {
if (p->is_modified()) {
modified_count++;
}
@@ -1238,7 +1229,7 @@ bool Core::CloseAllProjects(bool auto_open_new)
behavior = kCloseProjectOnlyOne;
}
foreach (ProjectPtr p, copy) {
foreach (Project* p, copy) {
// If this is the only remaining project and the user hasn't chose "yes/no to all", hide those buttons
if (modified_count == 1 && behavior == kCloseProjectAsk) {
behavior = kCloseProjectOnlyOne;
@@ -1288,7 +1279,7 @@ void Core::CacheActiveSequence(bool in_out_only)
}
}
bool Core::ValidateFootageInLoadedProject(ProjectPtr project, const QString& project_saved_url)
bool Core::ValidateFootageInLoadedProject(Project* project, const QString& project_saved_url)
{
QList<FootagePtr> footage_we_couldnt_validate;