[Spice-devel] [PATCH 5/5] Avoid to use _singleton for VDService

Victor Toso lists at victortoso.com
Tue Aug 16 13:58:00 UTC 2016


Hi,

Sorry for taking some time with the other patches ;)
Remaining patches are good to go!

Acked-by: Victor Toso <victortoso at redhat.com>

On Fri, Aug 12, 2016 at 12:02:09PM +0100, Frediano Ziglio wrote:
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list