gtk-rs / gtk3-rs

Rust bindings for GTK 3
https://gtk-rs.org
MIT License
508 stars 90 forks source link

Unexpected plug-added event for socket realized #772

Closed dvogel closed 1 year ago

dvogel commented 1 year ago

Bug description

With gtk-rs: Either shortly after the Socket realize signal or after the Window is moved/resized the plug-added and plug-removed callbacks will be called.

With C API: No plug-added or plug-removed callbacks are called.

Compare the rust and C implementations here: https://github.com/dvogel/gtk_socket_plug_repro/tree/main/rust_broken

In case it is helpful context, I'm compiling the C version against 3.24.34 as packaged by Debian.

Backtrace

N/A

sdroege commented 1 year ago

You're creating window/sock in a different order and in the gtk-rs version also call present() on the window. Also for the gtk-rs version you're using the builder to create window/sock.

Does it make a difference if you change this to be the same in both versions? I can't really test this here because of no X11.

dvogel commented 1 year ago

Thanks for pointing out those differences. They ended up not being the cause but while I was looking at them I noticed the C version does indeed receive these callbacks once the window is moved/resized. I'll file a bug upstream.