nosignal-shell/plugin/src/Caelestia/Services/serviceref.cpp
2 * r + 2 * t f9fa839013 plugin/service: ref by object
Use QSet and auto unref on sender destruction
2025-09-22 22:08:46 +10:00

36 lines
606 B
C++

#include "serviceref.hpp"
#include "service.hpp"
namespace caelestia {
ServiceRef::ServiceRef(Service* service, QObject* parent)
: QObject(parent)
, m_service(service) {
if (m_service) {
m_service->ref(this);
}
}
Service* ServiceRef::service() const {
return m_service;
}
void ServiceRef::setService(Service* service) {
if (m_service == service) {
return;
}
if (m_service) {
m_service->unref(this);
}
m_service = service;
emit serviceChanged();
if (m_service) {
m_service->ref(this);
}
}
} // namespace caelestia