Skip to content

Commit 1d2b93a

Browse files
planetchilimarkgalvan-intel
authored andcommitted
fix handle memory leaks
1 parent 9c0647d commit 1d2b93a

File tree

4 files changed

+21
-1
lines changed

4 files changed

+21
-1
lines changed

IntelPresentMon/PresentMonService/Service.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ void Service::SignalClientSessionOpened()
6565
SetEvent(clientSessionEvent_);
6666
}
6767

68+
Service::~Service()
69+
{
70+
if (clientSessionEvent_) {
71+
CloseHandle(clientSessionEvent_);
72+
}
73+
}
74+
6875
ConcreteService::ConcreteService(const TCHAR* serviceName) : mServiceName(serviceName)
6976
{
7077
mEventLogHandle = RegisterEventSource(NULL, mServiceName.c_str());

IntelPresentMon/PresentMonService/Service.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class Service
2323
virtual HANDLE GetResetPowerTelemetryHandle() = 0;
2424
HANDLE GetClientSessionHandle();
2525
void SignalClientSessionOpened();
26-
virtual ~Service() = default;
26+
virtual ~Service();
2727
private:
2828
std::optional<int> errCode_;
2929
HANDLE clientSessionEvent_;

PresentData/PresentMonTraceConsumer.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,13 @@ PMTraceConsumer::PMTraceConsumer()
156156
hEventsReadyEvent = CreateEventW(nullptr, FALSE, FALSE, nullptr);
157157
}
158158

159+
PMTraceConsumer::~PMTraceConsumer()
160+
{
161+
if (hEventsReadyEvent && hEventsReadyEvent != INVALID_HANDLE_VALUE) {
162+
CloseHandle(hEventsReadyEvent);
163+
}
164+
}
165+
159166
void PMTraceConsumer::HandleD3D9Event(EVENT_RECORD* pEventRecord)
160167
{
161168
auto const& hdr = pEventRecord->EventHeader;

PresentData/PresentMonTraceConsumer.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,12 @@ struct PMTraceConsumer
443443
// Functions for decoding ETW and analysing process and present events.
444444

445445
PMTraceConsumer();
446+
~PMTraceConsumer();
447+
448+
PMTraceConsumer(const PMTraceConsumer&) = delete;
449+
PMTraceConsumer& operator=(const PMTraceConsumer&) = delete;
450+
PMTraceConsumer(PMTraceConsumer&&) = delete;
451+
PMTraceConsumer& operator=(PMTraceConsumer&&) = delete;
446452

447453
void HandleDxgkBlt(EVENT_HEADER const& hdr, uint64_t hwnd, bool redirectedPresent);
448454
std::shared_ptr<PresentEvent> HandleDxgkFlip(EVENT_HEADER const& hdr);

0 commit comments

Comments
 (0)