From fc094ccaac66af2311e23c6a235e587fdf53269a Mon Sep 17 00:00:00 2001 From: shun-iwasawa Date: May 29 2023 08:31:47 +0000 Subject: fix batch rendering via task panel --- diff --git a/toonz/sources/include/tfarmtask.h b/toonz/sources/include/tfarmtask.h index 23a1bcd..03751bc 100644 --- a/toonz/sources/include/tfarmtask.h +++ b/toonz/sources/include/tfarmtask.h @@ -135,6 +135,7 @@ public: QString getCommandLinePrgName() const; QString getCommandLineArguments() const; + QStringList getCommandLineArgumentsList() const; QString getCommandLine(bool isFarmTask = false) const; void parseCommandLine(QString commandLine); diff --git a/toonz/sources/toonz/batches.cpp b/toonz/sources/toonz/batches.cpp index a0877c1..a0bd2d3 100644 --- a/toonz/sources/toonz/batches.cpp +++ b/toonz/sources/toonz/batches.cpp @@ -244,17 +244,7 @@ commandline += " -id " + task->m_id;*/ } process->setProgram(task->getCommandLinePrgName()); -#if defined(_WIN32) - process->setNativeArguments(task->getCommandLineArguments()); -#else -#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) - process->setArguments( - task->getCommandLineArguments().split(" ", Qt::SkipEmptyParts)); -#else - process->setArguments( - task->getCommandLineArguments().split(" ", QString::SkipEmptyParts)); -#endif -#endif + process->setArguments(task->getCommandLineArgumentsList()); process->start(); process->waitForFinished(-1); diff --git a/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp b/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp index 836266b..28fd4b2 100644 --- a/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp +++ b/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp @@ -368,8 +368,8 @@ static QString getExeName(bool isComposer) { return name + ".exe "; #elif defined(MACOSX) TVER::ToonzVersion tver; - return "\"./" + QString::fromStdString(tver.getAppName()) + - ".app/Contents/MacOS/" + name + "\" "; + return QString::fromStdString(tver.getAppName()) + ".app/Contents/MacOS/" + + name; #else return name; #endif @@ -541,6 +541,59 @@ QString TFarmTask::getCommandLineArguments() const { return cmdline; } +QStringList TFarmTask::getCommandLineArgumentsList() const { + QStringList ret; + + if (!m_taskFilePath.isEmpty()) + ret << QString::fromStdWString( + TSystem::toUNC(m_taskFilePath).getWideString()); + + if (m_callerMachineName != "") { + struct hostent *he = gethostbyname(m_callerMachineName.toLatin1()); + if (he) { + char *ipAddress = inet_ntoa(*(struct in_addr *)*(he->h_addr_list)); + ret << "-tmsg" << QString::fromUtf8(ipAddress); + } + } + + if (!m_isComposerTask) { + if (m_overwrite == Overwrite_All) + ret << "-overwriteAll"; + else if (m_overwrite == Overwrite_NoPaint) + ret << "-overwriteNoPaint"; + if (m_onlyVisible) ret << "-onlyvisible"; + return ret; + } + + if (!m_outputPath.isEmpty()) { + TFilePath outputPath; + try { + outputPath = TSystem::toUNC(m_outputPath); + } catch (TException &) { + } + + ret << "-o" << QString::fromStdWString(outputPath.getWideString()); + } + + ret << "-range" << QString::number(m_from) << QString::number(m_to); + ret << "-step" << QString::number(m_step); + ret << "-shrink" << QString::number(m_shrink); + ret << "-multimedia" << QString::number(m_multimedia); + + const QString threadCounts[3] = {"single", "half", "all"}; + ret << "-nthreads" << threadCounts[m_threadsIndex]; + + const QString maxTileSizes[4] = { + "none", QString::number(TOutputProperties::LargeVal), + QString::number(TOutputProperties::MediumVal), + QString::number(TOutputProperties::SmallVal)}; + ret << "-maxtilesize" << maxTileSizes[m_maxTileSizeIndex]; + + QString appname = QSettings().applicationName(); + + return ret; +} + QString TFarmTask::getCommandLine(bool) const { return getCommandLinePrgName() + getCommandLineArguments(); }