Ticket #3404: 3404_timeElapsed_v1.patch

File 3404_timeElapsed_v1.patch, 3.1 KB (added by Imarok, 8 years ago)
  • source/ps/scripting/JSInterface_VisualReplay.cpp

     
    1 /* Copyright (C) 2015 Wildfire Games.
     1/* Copyright (C) 2016 Wildfire Games.
    22 * This file is part of 0 A.D.
    33 *
    44 * 0 A.D. is free software: you can redistribute it and/or modify
     
    4848
    4949JS::Value JSI_VisualReplay::GetReplayMetadata(ScriptInterface::CxPrivate* pCxPrivate, const CStrW& directoryName)
    5050{
    51     return VisualReplay::GetReplayMetadata(pCxPrivate, directoryName);
     51    return VisualReplay::GetReplayMetadata(*(pCxPrivate->pScriptInterface), directoryName);
    5252}
    5353
    5454void JSI_VisualReplay::SaveReplayMetadata(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const CStrW& data)
  • source/ps/VisualReplay.cpp

     
    238238        return JSVAL_NULL;
    239239    }
    240240
    241     int duration = getReplayDuration(replayStream, fileName, fileSize);
     241    int duration = 0;
     242    JS::RootedValue metadata(cx, GetReplayMetadata(scriptInterface, directory.string()));
     243    if (!metadata.isNull())
     244    {
     245        JS::RootedObject metadataObject(cx, &metadata.toObject());
     246        JS::RootedValue timeElapsed(cx);
     247        JS_GetProperty(cx, metadataObject, "timeElapsed", &timeElapsed);
     248        scriptInterface.FromJSVal(cx, timeElapsed, duration);
     249        duration /= 1000;
     250    }
     251    if (!duration)
     252        duration = getReplayDuration(replayStream, fileName, fileSize);
    242253
    243254    SAFE_DELETE(replayStream);
    244255
     
    321332    return fileInfo.Size() > 0;
    322333}
    323334
    324 JS::Value VisualReplay::GetReplayMetadata(ScriptInterface::CxPrivate* pCxPrivate, const CStrW& directoryName)
     335JS::Value VisualReplay::GetReplayMetadata(ScriptInterface& scriptInterface, const CStrW& directoryName)
    325336{
    326337    if (!HasReplayMetadata(directoryName))
    327338        return JSVAL_NULL;
    328339
    329     JSContext* cx = pCxPrivate->pScriptInterface->GetContext();
     340    JSContext* cx = scriptInterface.GetContext();
    330341    JSAutoRequest rq(cx);
    331342    JS::RootedValue metadata(cx);
    332343
     
    336347    std::getline(*stream, line);
    337348    stream->close();
    338349    SAFE_DELETE(stream);
    339     pCxPrivate->pScriptInterface->ParseJSON(line, &metadata);
     350    scriptInterface.ParseJSON(line, &metadata);
    340351
    341352    return metadata;
    342353}
  • source/ps/VisualReplay.h

     
    1 /* Copyright (C) 2015 Wildfire Games.
     1/* Copyright (C) 2016 Wildfire Games.
    22 * This file is part of 0 A.D.
    33 *
    44 * 0 A.D. is free software: you can redistribute it and/or modify
     
    7676/**
    7777 * Returns the metadata of a replay.
    7878 */
    79 JS::Value GetReplayMetadata(ScriptInterface::CxPrivate* pCxPrivate, const CStrW& directoryName);
     79JS::Value GetReplayMetadata(ScriptInterface& scriptInterface, const CStrW& directoryName);
    8080
    8181/**
    8282 * Saves the metadata from the session to metadata.json