119
119
G_CALLBACK(&MiracastControllerSkeleton::OnHandleScan), new WeakKeepAlive<MiracastControllerSkeleton>(inst),
120
120
[](gpointer data, GClosure *) { delete static_cast<WeakKeepAlive<MiracastControllerSkeleton>*>(data); }, GConnectFlags(0));
122
g_signal_connect_data(inst->manager_obj_.get(), "handle-disconnect-all",
123
G_CALLBACK(&MiracastControllerSkeleton::OnHandleDisconnectAll), new WeakKeepAlive<MiracastControllerSkeleton>(inst),
124
[](gpointer data, GClosure *) { delete static_cast<WeakKeepAlive<MiracastControllerSkeleton>*>(data); }, GConnectFlags(0));
122
126
inst->SyncProperties();
124
128
g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(inst->manager_obj_.get()),
143
147
INFO("Scanning for remote devices");
149
const auto error = inst->Scan();
150
if (error != mcs::Error::kNone) {
151
g_dbus_method_invocation_return_error(invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "%s", mcs::ErrorToString(error).c_str());
147
155
g_dbus_method_invocation_return_value(invocation, nullptr);
160
gboolean MiracastControllerSkeleton::OnHandleDisconnectAll(AethercastInterfaceManager *skeleton,
161
GDBusMethodInvocation *invocation, gpointer user_data) {
162
boost::ignore_unused_variable_warning(skeleton);
163
const auto inst = static_cast<WeakKeepAlive<MiracastControllerSkeleton>*>(user_data)->GetInstance().lock();
166
g_dbus_method_invocation_return_error(invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Invalid state");
170
g_object_ref(invocation);
171
auto inv = make_shared_gobject(invocation);
173
inst->DisconnectAll([inv](mcs::Error error) {
174
if (error != Error::kNone) {
175
g_dbus_method_invocation_return_error(inv.get(), G_DBUS_ERROR, G_DBUS_ERROR_FAILED,
176
"%s", mcs::ErrorToString(error).c_str());
180
g_dbus_method_invocation_return_value(inv.get(), nullptr);
152
186
std::shared_ptr<MiracastControllerSkeleton> MiracastControllerSkeleton::FinalizeConstruction() {
153
187
auto sp = shared_from_this();