Re: rendering-cleanup worries



Alexander Larsson <alexl <at> redhat.com> writes:
> It may seem correct and easier, and in most cases it will work. But
> things like that were added for a reason. In this case it is to make
> things like notification icon work, where there the parent of the window
> we paint in is a foreign window (the tray) so we don't know what
> background it has set. Using a native X clear function means we'll get
> this right anyway. Without this change all systray icons get a black
> background.
> 
Looks like I'll have to fix gtkstatusicon.c to call XClearArea.

> In general I'm a bit worried about the rendering cleanup branch wrt
> non-obvious issues like this. After doing the "simple" part of the csw
> work I spent many months chasing minute issues like this to make the
> full desktop with all its apps work with csw. 
>
I don't think it's GTK's job to have corner-case workarounds for weird
platform issues. If that were the case, we could just get rid of GDK and
use libX11 directly. To me GDK is supposed to be a useful abstraction to
write a portable widget toolkit, so I'm not too worried about not handling
corner cases as long as we allow apps to handle them on the libX11 level
should they care.

> I fear that we will not be
> able to do this with gtk3, because there are not enough apps to expose
> all the corner case issues we might hit before we release, and by then
> we're frozen and may be unable to fix some issue.
> 
This won't happen unless we get some more developers spending time on this
stuff. And so far I'd say there's just me - and a large group of
enthusiastic but worried bystanders.

Still, GTK3 is an API and ABI break, so we can allow semantic changes. If
we intend to keep GTK3 rendering 1:1 compatible with GTK2, then I should
probably stop doing this work, because it definitely is intrusive enough
to break things, in particular for apps that rely on weird corner cases
(like Mozilla or Eclipse). This is not intended to be like your csw work
where you were trying to guarantee binary compatibility. In fact, one of
my goals is the direct opposite: I want to make the code easier. And I'm
happy to sacrifice lots of corner cases for this.

Benjamin



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]