mingw-spice-vdagent/0040-Use-destructor-instead...

103 lines
3.1 KiB
Diff

From 2ae3bd5b9c9548c096e13f5de42855680a63b692 Mon Sep 17 00:00:00 2001
From: Frediano Ziglio <fziglio@redhat.com>
Date: Sun, 1 Jul 2018 06:40:48 +0100
Subject: [PATCH 40/43] Use destructor instead of cleanup function
More C++ style.
Also avoids missing cleanup calls.
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
---
vdagent/vdagent.cpp | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/vdagent/vdagent.cpp b/vdagent/vdagent.cpp
index 69d61da..306bfbd 100644
--- a/vdagent/vdagent.cpp
+++ b/vdagent/vdagent.cpp
@@ -116,7 +116,6 @@ private:
void load_display_setting();
bool send_announce_capabilities(bool request);
void cleanup_in_msg();
- void cleanup();
bool has_capability(unsigned int capability) const {
return VD_AGENT_HAS_CAPABILITY(_client_caps.begin(), _client_caps.size(),
capability);
@@ -223,6 +222,8 @@ VDAgent::VDAgent()
VDAgent::~VDAgent()
{
+ FreeLibrary(_user_lib);
+ close_vio_serial();
CloseHandle(_stop_event);
CloseHandle(_control_event);
delete _log;
@@ -257,6 +258,8 @@ bool VDAgent::run()
HANDLE event_thread;
WNDCLASS wcls;
+ close_vio_serial();
+
if (!ProcessIdToSessionId(GetCurrentProcessId(), &session_id)) {
vd_printf("ProcessIdToSessionId failed %lu", GetLastError());
return false;
@@ -289,7 +292,6 @@ bool VDAgent::run()
_control_event = CreateEvent(NULL, FALSE, FALSE, NULL);
if (!_control_event) {
vd_printf("CreateEvent() failed: %lu", GetLastError());
- cleanup();
return false;
}
ResetEvent(_control_event);
@@ -302,7 +304,6 @@ bool VDAgent::run()
wcls.lpszClassName = VD_AGENT_WINCLASS_NAME;
if (!RegisterClass(&wcls)) {
vd_printf("RegisterClass() failed: %lu", GetLastError());
- cleanup();
return false;
}
_desktop_layout.reset(new DesktopLayout());
@@ -310,20 +311,17 @@ bool VDAgent::run()
vd_printf("No QXL devices!");
}
if (!init_vio_serial()) {
- cleanup();
return false;
}
if (!ReadFileEx(_vio_serial, _read_buf, sizeof(VDIChunk), &_read_overlapped, read_completion) &&
GetLastError() != ERROR_IO_PENDING) {
vd_printf("vio_serial read error %lu", GetLastError());
- cleanup();
return false;
}
_running = true;
event_thread = CreateThread(NULL, 0, event_thread_proc, this, 0, NULL);
if (!event_thread) {
vd_printf("CreateThread() failed: %lu", GetLastError());
- cleanup();
return false;
}
send_announce_capabilities(true);
@@ -337,16 +335,9 @@ bool VDAgent::run()
}
vd_printf("Agent stopped");
CloseHandle(event_thread);
- cleanup();
return true;
}
-void VDAgent::cleanup()
-{
- FreeLibrary(_user_lib);
- close_vio_serial();
-}
-
void VDAgent::set_control_event(control_command_t control_command)
{
MutexLocker lock(_control_mutex);
--
2.17.1