client: Do not warn about attached proxies on default queue destruction.

If the default queue is being destroyed, the client is disconnecting
from the wl_display, so there is no possibility of subsequent events
being queued to the destroyed default queue, which is what this warning
is about.

Note that interacting with (e.g., destroying) a wl_proxy after its
wl_display is destroyed is a certain memory error, and this warning will
indirectly warn about this issue. However, this memory error should be
detected and warned about through a more deliberate mechanism.

Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
This commit is contained in:
Alexandros Frantzis 2023-02-28 23:42:59 +02:00
parent 344d31f871
commit b01a85dfd5
2 changed files with 71 additions and 6 deletions

View file

@ -304,14 +304,18 @@ wl_event_queue_release(struct wl_event_queue *queue)
if (!wl_list_empty(&queue->proxy_list)) {
struct wl_proxy *proxy, *tmp;
wl_log("warning: queue %p destroyed while proxies still "
"attached:\n", queue);
if (queue != &queue->display->default_queue) {
wl_log("warning: queue %p destroyed while proxies "
"still attached:\n", queue);
}
wl_list_for_each_safe(proxy, tmp, &queue->proxy_list,
queue_link) {
wl_log(" %s@%u still attached\n",
proxy->object.interface->name,
proxy->object.id);
if (queue != &queue->display->default_queue) {
wl_log(" %s@%u still attached\n",
proxy->object.interface->name,
proxy->object.id);
}
proxy->queue = NULL;
wl_list_remove(&proxy->queue_link);
wl_list_init(&proxy->queue_link);