Skip to content

[Bug]: False negative in EditRenderJob #271

@JelleBakker

Description

@JelleBakker

Detailed steps on how to reproduce the bug

I'm performing a render for an in-memory Edit (meaning, no project file on disk exists for the Edit).

Additionally, I'm rendering to seperate tracks.

The problem is that EditRenderJob is reporting the job as failed, due to what I believe is a bug in the logic in the following Tracktion code:

bool EditRenderJob::completeRender()
{
    CRASH_TRACER

    if (result.items.size() > 0
         || (params.category == ProjectItem::Category::none && proxy.getFile().existsAsFile()))
        result.result = juce::Result::ok();

    return result.result.wasOk();
}

Given that my Edit is an in-memory edit, params.category stays at its default value of ProjectItem::Category::none (see Renderer::Parameters RenderOptions::getRenderParameters (Edit& edit, SelectionManager* selectionManager, TimeRange markedRegionTime)).

This results in result.items (list of ProjectItems) being empty, for which the logic is found in RenderPass::~RenderPass().

Looking at the condition up in completeRender, the only other thing that can make the job be marked as success is if the proxy file exists. The problem is that the proxy file doesn't exist if separateTracks is true, which it is for me, because then each track is rendered to a unique file, not to the proxy file. See the code below from void EditRenderJob::renderSeparateTracks():

auto file = proxy.getFile();
auto trackFile = file.getSiblingFile (file.getFileNameWithoutExtension()
                                                       + " " + track->getName()
                                                       + " " + TRANS("Render") + " 0"
                                                       + file.getFileExtension());

params.destFile = juce::File (juce::File::createLegalPathName (getNonExistentSiblingWithIncrementedNumberSuffix (trackFile, false)
                                                                                .getFullPathName()));

Any idea how to fix this?

What is the expected behaviour?

The job succeeds :)

Unit test to reproduce the error?

Operating systems

macOS

What versions of the operating systems?

15.6.1 (24G90)

Architectures

ARM

Stacktrace

Plug-in formats (if applicable)

Standalone

Plug-in host applications (DAWs) (if applicable)

No response

Testing on the develop branch

The bug is present on the develop branch

Code of Conduct

  • I agree to follow the Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions