[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bindings
Subject:    Re: [Kde-bindings] Qt, Qyoto buttons work intermediately
From:       James Mansion <james () mansionfamily ! plus ! com>
Date:       2010-02-18 6:06:54
Message-ID: 4B7CD8FE.5080606 () mansionfamily ! plus ! com
[Download RAW message or body]

Arno Rehn wrote:
> Now we have to decide when this point is reached.
> One condition is, of course, to have no more valid references to the window in 
> code.
>   
Yes, but:
 - I can see it and interact with it
and
 - the window system might deliver an event to it that causes it to reappear

I think your strategy handles the former, but I'm concerned about 
timers, network events and so on.

> As top-level widgets in a fully managed GUI toolkit would for sure have valid 
> references in some hashtable or list, the window probably wouldn't be deleted 
> while it's visible (except if the user explicitly wants it to be deleted). So 
> currently I try to emulate that behaviour by catching show and hide events.
>   
I understand - I just think 'visible' is the wrong way to do it: I might 
have a window that is
orphaned like this and is protected while visible but then destroyed 
just because some timer
or other handler *owned by the window* elects to hide it temporarily.  I 
think that will be very
confusing.

> I can't think of any situation where this would cause a race condition. The 
> window is created, the show() method is called and we create a global 
> reference to it so it won't be deleted until it's hidden again. Can't see a 
> step where a race condition could occur here.
>   
By 'race' I mean 'be destroyed by GC' since the decision to start GC is 
essentially asynchronous.
In your scheme it might be OK - its an issue with create/destroy in the 
native window system.

I think theer is precedent for retaining unowned top level windows in 
PyQt isn't there, and
probably elsewhere?  Why not just look at other GC'd windowing systems 
and see what they
do?

I suspect that a window that is logically 'open' (and has no parent) is 
normally retained, and
I'm arguing that it should be open/close, not show/hide that drive this.


_______________________________________________
Kde-bindings mailing list
Kde-bindings@kde.org
https://mail.kde.org/mailman/listinfo/kde-bindings
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic