Skip to content

Commit c51814e

Browse files
committed
Fix memory leak with pauseMngr.
1 parent 9677d8a commit c51814e

File tree

3 files changed

+9
-15
lines changed

3 files changed

+9
-15
lines changed

src/xrCore/FTimer.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,9 @@ void CStatTimer::FrameEnd() {
1818
result = 0.99f * result + 0.01f * time;
1919
}
2020

21-
XRCORE_API pauseMngr* g_pauseMngr()
21+
XRCORE_API pauseMngr& g_pauseMngr()
2222
{
23-
static pauseMngr* manager = nullptr;
24-
25-
if (!manager)
26-
{
27-
manager = new pauseMngr();
28-
}
29-
23+
static pauseMngr manager;
3024
return manager;
3125
}
3226

src/xrCore/FTimer.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class XRCORE_API pauseMngr : Noncopyable
2323
void UnRegister(CTimer_paused& t);
2424
};
2525

26-
extern XRCORE_API pauseMngr* g_pauseMngr();
26+
extern XRCORE_API pauseMngr& g_pauseMngr();
2727

2828
class XRCORE_API CTimerBase
2929
{
@@ -142,8 +142,8 @@ class XRCORE_API CTimer_paused_ex : public CTimer
142142
class XRCORE_API CTimer_paused : public CTimer_paused_ex
143143
{
144144
public:
145-
CTimer_paused() { g_pauseMngr()->Register(*this); }
146-
virtual ~CTimer_paused() { g_pauseMngr()->UnRegister(*this); }
145+
CTimer_paused() { g_pauseMngr().Register(*this); }
146+
virtual ~CTimer_paused() { g_pauseMngr().UnRegister(*this); }
147147
};
148148

149149
extern XRCORE_API bool g_bEnableStatGather;

src/xrEngine/device.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ void CRenderDevice::Pause(BOOL bOn, BOOL bTimer, BOOL bSound, LPCSTR reason)
411411
TRUE;
412412
if (bTimer && (!g_pGamePersistent || g_pGamePersistent->CanBePaused()))
413413
{
414-
g_pauseMngr()->Pause(TRUE);
414+
g_pauseMngr().Pause(TRUE);
415415
#ifdef DEBUG
416416
if (!xr_strcmp(reason, "li_pause_key_no_clip"))
417417
TimerGlobal.Pause(FALSE);
@@ -422,10 +422,10 @@ void CRenderDevice::Pause(BOOL bOn, BOOL bTimer, BOOL bSound, LPCSTR reason)
422422
}
423423
else
424424
{
425-
if (bTimer && g_pauseMngr()->Paused())
425+
if (bTimer && g_pauseMngr().Paused())
426426
{
427427
fTimeDelta = EPS_S + EPS_S;
428-
g_pauseMngr()->Pause(FALSE);
428+
g_pauseMngr().Pause(FALSE);
429429
}
430430
if (bSound)
431431
{
@@ -441,7 +441,7 @@ void CRenderDevice::Pause(BOOL bOn, BOOL bTimer, BOOL bSound, LPCSTR reason)
441441
}
442442
}
443443

444-
BOOL CRenderDevice::Paused() { return g_pauseMngr()->Paused(); }
444+
BOOL CRenderDevice::Paused() { return g_pauseMngr().Paused(); }
445445
void CRenderDevice::OnWM_Activate(WPARAM wParam, LPARAM /*lParam*/)
446446
{
447447
u16 fActive = LOWORD(wParam);

0 commit comments

Comments
 (0)