#include #include "svcwndhold.h" #include #include #include ServiceWndHolder::ServiceWndHolder(ifc_window *_child, svc_windowCreate *_svc) : child(NULL), svc(NULL) { setChild(_child, _svc); } ServiceWndHolder::~ServiceWndHolder() { if (svc != NULL) { svc->destroyWindow(child); if (!svc->refcount()) WASABI_API_SVC->service_release(svc); } else { delete static_cast(child); } } int ServiceWndHolder::setChild(ifc_window *_child, svc_windowCreate *_svc) { if (child == _child && svc == _svc) return 0; if (child != NULL) { if (svc != NULL) { svc->destroyWindow(child); if (!svc->refcount()) WASABI_API_SVC->service_release(svc); svc = NULL; } else { delete static_cast(child); } child = NULL; } child = _child; svc = _svc; return 1; } ifc_window *ServiceWndHolder::rootwndholder_getRootWnd() { return child ? child : SERVICEWNDHOLDER_PARENT::rootwndholder_getRootWnd(); }