mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-08-22 07:01:30 +00:00
[client] transport: report loss before provider cleanup
Some checks failed
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
Some checks failed
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
This commit is contained in:
@@ -1212,10 +1212,10 @@ int main_cursorThread(void * unused)
|
|||||||
|
|
||||||
if (status == LG_TRANSPORT_DISCONNECTED)
|
if (status == LG_TRANSPORT_DISCONNECTED)
|
||||||
{
|
{
|
||||||
|
primaryLost();
|
||||||
lgInput_dropTransport();
|
lgInput_dropTransport();
|
||||||
lgAudio_dropTransport();
|
lgAudio_dropTransport();
|
||||||
clipboard_dropTransport();
|
clipboard_dropTransport();
|
||||||
primaryLost();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1416,10 +1416,10 @@ int main_frameThread(void * unused)
|
|||||||
}
|
}
|
||||||
if (status == LG_TRANSPORT_DISCONNECTED)
|
if (status == LG_TRANSPORT_DISCONNECTED)
|
||||||
{
|
{
|
||||||
|
primaryLost();
|
||||||
lgInput_dropTransport();
|
lgInput_dropTransport();
|
||||||
lgAudio_dropTransport();
|
lgAudio_dropTransport();
|
||||||
clipboard_dropTransport();
|
clipboard_dropTransport();
|
||||||
primaryLost();
|
|
||||||
}
|
}
|
||||||
else if (status == LG_TRANSPORT_END)
|
else if (status == LG_TRANSPORT_END)
|
||||||
primaryWorkerFailed();
|
primaryWorkerFailed();
|
||||||
@@ -3921,10 +3921,10 @@ restart:
|
|||||||
if (unlikely(!g_state.transport.ops->sessionValid(
|
if (unlikely(!g_state.transport.ops->sessionValid(
|
||||||
g_state.transport.handle)))
|
g_state.transport.handle)))
|
||||||
{
|
{
|
||||||
|
primaryLost();
|
||||||
lgInput_dropTransport();
|
lgInput_dropTransport();
|
||||||
lgAudio_dropTransport();
|
lgAudio_dropTransport();
|
||||||
clipboard_dropTransport();
|
clipboard_dropTransport();
|
||||||
primaryLost();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
lgMessage_process();
|
lgMessage_process();
|
||||||
|
|||||||
@@ -262,6 +262,12 @@ static bool cleanupConnection(LG_TransportFallback * fallback,
|
|||||||
fallback->connectedReported = false;
|
fallback->connectedReported = false;
|
||||||
LG_UNLOCK_EXCLUSIVE(fallback->lock);
|
LG_UNLOCK_EXCLUSIVE(fallback->lock);
|
||||||
|
|
||||||
|
/* Report a dead session before provider teardown, which may be waiting on
|
||||||
|
* work abandoned by the remote endpoint. */
|
||||||
|
const bool reportLost = knownDead && reportDisconnected &&
|
||||||
|
!atomic_load_explicit(&fallback->stop, memory_order_acquire);
|
||||||
|
notifyLost(fallback, reportLost);
|
||||||
|
|
||||||
const bool live = !knownDead && sessionLive(fallback);
|
const bool live = !knownDead && sessionLive(fallback);
|
||||||
unpublishProviders(fallback, live);
|
unpublishProviders(fallback, live);
|
||||||
|
|
||||||
@@ -476,9 +482,6 @@ static bool connectFallback(LG_TransportFallback * fallback)
|
|||||||
if (reportMismatch && fallback->eventOps.endpointMismatch)
|
if (reportMismatch && fallback->eventOps.endpointMismatch)
|
||||||
fallback->eventOps.endpointMismatch(
|
fallback->eventOps.endpointMismatch(
|
||||||
fallback->eventOpaque, primaryUUID, fallbackUUID);
|
fallback->eventOpaque, primaryUUID, fallbackUUID);
|
||||||
const bool reportLost = lost && reportDisconnect && !atomic_load_explicit(
|
|
||||||
&fallback->stop, memory_order_acquire);
|
|
||||||
notifyLost(fallback, reportLost);
|
|
||||||
notifyDisconnected(fallback, reportDisconnect);
|
notifyDisconnected(fallback, reportDisconnect);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user