Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- vdservice/vdservice.cpp | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/vdservice/vdservice.cpp b/vdservice/vdservice.cpp index ef1ed9f..d2bedaa 100644 --- a/vdservice/vdservice.cpp +++ b/vdservice/vdservice.cpp @@ -59,14 +59,13 @@ typedef std::queue<int> VDControlQueue; class VDService { public: - static VDService* get(); - ~VDService(); - bool run(); - bool install(); - bool uninstall(); + static bool run(); + static bool install(); + static bool uninstall(); private: VDService(); + ~VDService(); bool execute(); void stop(); static DWORD WINAPI control_handler(DWORD control, DWORD event_type, @@ -87,7 +86,6 @@ private: } } private: - static VDService* _singleton; SERVICE_STATUS _status; SERVICE_STATUS_HANDLE _status_handle; PROCESS_INFORMATION _agent_proc_info; @@ -109,16 +107,6 @@ private: unsigned _events_count; }; -VDService* VDService::_singleton = NULL; - -VDService* VDService::get() -{ - if (!_singleton) { - _singleton = new VDService(); - } - return (VDService*)_singleton; -} - VDService::VDService() : _status_handle (0) , _events (NULL) @@ -138,7 +126,6 @@ VDService::VDService() _agent_path[0] = wchar_t('\0'); MUTEX_INIT(_agent_mutex); MUTEX_INIT(_control_mutex); - _singleton = this; } VDService::~VDService() @@ -322,7 +309,7 @@ DWORD WINAPI VDService::control_handler(DWORD control, DWORD event_type, LPVOID VOID WINAPI VDService::main(DWORD argc, TCHAR* argv[]) { - VDService* s = _singleton; + VDService* s = new VDService; SERVICE_STATUS* status; TCHAR log_path[MAX_PATH]; TCHAR full_path[MAX_PATH]; @@ -382,6 +369,7 @@ VOID WINAPI VDService::main(DWORD argc, TCHAR* argv[]) SetServiceStatus(s->_status_handle, status); #endif //DEBUG_VDSERVICE vd_printf("***Service stopped***"); + delete s; } bool VDService::execute() @@ -839,18 +827,16 @@ int _tmain(int argc, TCHAR* argv[]) printf("vdservice is not supported in this system version\n"); return -1; } - VDService* vdservice = VDService::get(); if (argc > 1) { if (lstrcmpi(argv[1], TEXT("install")) == 0) { - success = vdservice->install(); + success = VDService::install(); } else if (lstrcmpi(argv[1], TEXT("uninstall")) == 0) { - success = vdservice->uninstall(); + success = VDService::uninstall(); } else { printf("Use: vdservice install / uninstall\n"); } } else { - success = vdservice->run(); + success = VDService::run(); } - delete vdservice; return (success ? 0 : -1); } -- 2.7.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel