mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 01:58:19 +00:00
The demoeditors are now initialised in the constructor of the job
This commit is contained in:
parent
cbcb8d4830
commit
7c79b48da5
|
@ -3325,12 +3325,8 @@ void CClient::SaveReplay()
|
|||
const int EndTick = GameTick();
|
||||
const int StartTick = EndTick - g_Config.m_ClReplayLength * GameTickSpeed();
|
||||
|
||||
// Create a DemoEditor to do the job
|
||||
CDemoEditor *DemoEditor = new CDemoEditor();
|
||||
DemoEditor->Init(m_pGameClient->NetVersion(), &m_SnapshotDelta, m_pConsole, m_pStorage);
|
||||
|
||||
// Create a job to do this slicing in background because it can be a bit long depending on the file size
|
||||
std::shared_ptr<CDemoEdit> pDemoEditTask = std::make_shared<CDemoEdit>(this, m_pConsole, DemoEditor, pSrc, aFilename, StartTick, EndTick);
|
||||
std::shared_ptr<CDemoEdit> pDemoEditTask = std::make_shared<CDemoEdit>(this, &m_SnapshotDelta, m_pConsole, pSrc, aFilename, StartTick, EndTick);
|
||||
Engine()->AddJob(pDemoEditTask);
|
||||
}
|
||||
}
|
||||
|
@ -3995,25 +3991,26 @@ void CClient::GetSmoothTick(int *pSmoothTick, float *pSmoothIntraTick, float Mix
|
|||
|
||||
CDemoEdit::~CDemoEdit()
|
||||
{
|
||||
delete m_pDemoEditor;
|
||||
}
|
||||
|
||||
CDemoEdit::CDemoEdit(CClient *pClient, IConsole *pConsole, CDemoEditor *pDemoEditor, const char *pDemo, const char *pDst, int StartTick, int EndTick) :
|
||||
CDemoEdit::CDemoEdit(CClient *pClient, CSnapshotDelta *pSnapshotDelta, IConsole *pConsole, const char *pDemo, const char *pDst, int StartTick, int EndTick) :
|
||||
m_pClient(pClient),
|
||||
m_pConsole(pConsole),
|
||||
m_pDemoEditor(pDemoEditor)
|
||||
m_pConsole(pConsole)
|
||||
{
|
||||
str_copy(m_pDemo, pDemo, sizeof(m_pDemo));
|
||||
str_copy(m_pDst, pDst, sizeof(m_pDst));
|
||||
|
||||
m_StartTick = StartTick;
|
||||
m_EndTick = EndTick;
|
||||
|
||||
// Init the demoeditor
|
||||
m_DemoEditor.Init(pClient->GameClient()->NetVersion(), pSnapshotDelta, pConsole, pClient->Storage());
|
||||
}
|
||||
|
||||
void CDemoEdit::Run()
|
||||
{
|
||||
// Slice the actual demo
|
||||
m_pDemoEditor->Slice(m_pDemo, m_pDst, m_StartTick, m_EndTick, NULL, 0);
|
||||
m_DemoEditor.Slice(m_pDemo, m_pDst, m_StartTick, m_EndTick, NULL, 0);
|
||||
|
||||
// Notify the player via console and a hud notification
|
||||
char aBuf[256];
|
||||
|
|
|
@ -429,14 +429,14 @@ class CDemoEdit : public IJob
|
|||
{
|
||||
CClient *m_pClient;
|
||||
IConsole *m_pConsole;
|
||||
CDemoEditor *m_pDemoEditor;
|
||||
CDemoEditor m_DemoEditor;
|
||||
char m_pDemo[256];
|
||||
char m_pDst[256];
|
||||
int m_StartTick;
|
||||
int m_EndTick;
|
||||
|
||||
public:
|
||||
CDemoEdit(CClient *pClient, IConsole *pConsole, CDemoEditor *pDemoEditor, const char *pDemo, const char *pDst, int StartTick, int EndTick);
|
||||
CDemoEdit(CClient *pClient, CSnapshotDelta *pSnapshotDelta, IConsole *pConsole, const char *pDemo, const char *pDst, int StartTick, int EndTick);
|
||||
~CDemoEdit();
|
||||
void Run();
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue