Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Bug]: False negative in EditRenderJob

Aperta
#271 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
42/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
cpp

Direzione di ricerca

The faulty check is in EditRenderJob::completeRender() in the render subsystem; it only reports success when result.items is non-empty or the proxy file exists. For an in-memory Edit params.category stays ProjectItem::Category::none and renderSeparateTracks() writes per-track files, so read completeRender() together with renderSeparateTracks(), RenderPass::~RenderPass() and RenderOptions::getRenderParameters() to see which output files should count. Done means an in-memory Edit rendered with separate tracks reports success, covered by a small unit test.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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
Lingua principale
C++
Stelle
1.5k
Fork
222
Merge medio
15h 44m
PR unite (30g)
33

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Tracktion/tracktion_engine

Tutte le issue di Tracktion/tracktion_engine

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.