Fixed
Status Update
Comments
je...@google.com <je...@google.com>
ap...@google.com <ap...@google.com> #2
I'm pretty far from being a C++ expert, but I think this may be due to holding a reference to the Config
beyond it's lifetime?
See StartDiscovery()
:
void StartDiscovery() {
...
g_state->task_runner->PostTask([]() {
// optional<Config> created here
auto config = GetConfigForAllInterfaces();
if (!config) {
return;
}
// long-lived reference of config given to OpenScreen
g_state->service = discovery::CreateDnsSdService(g_state->task_runner.get(),
g_state->reporting_client.get(), *config);
for (int i = 0; i < kNumADBDNSServices; ++i) {
auto receiver = std::make_unique<ServiceReceiver>(
g_state->service.get(), kADBDNSServices[i], OnServiceReceiverResult);
receiver->StartDiscovery();
...
}
...
// config destructed here
});
}
Description
In the worst case it can make it very hard to scroll in the perpendicular direction of the direction in which pre-scroll is consumed, because as soon as pre scroll starts consuming, nested scrolling (should) lock the scroll in that direction.