On Thu, Sep 5, 2013 at 7:28 AM, Carsten Haitzler <[email protected]> wrote:
> On Thu, 5 Sep 2013 04:47:07 +0100 Michael Blumenkrantz
> <[email protected]> said:
>> On Thu, 5 Sep 2013 12:44:13 +0900
>> Carsten Haitzler (The Rasterman) <[email protected]> wrote:
>>
>> > On Thu, 5 Sep 2013 04:18:52 +0100 Michael Blumenkrantz
>> > <[email protected]> said:
>> >
>> > > On Thu, 5 Sep 2013 08:59:11 +0900
>> > > Carsten Haitzler (The Rasterman) <[email protected]> wrote:
>> > >
>> > > > On Wed, 4 Sep 2013 19:29:38 +0100 Michael Blumenkrantz
>> > > > <[email protected]> said:
>> > > >
>> > > > > On Tue, 03 Sep 2013 23:13:39 -0700
>> > > > > Carsten Haitzler (Rasterman) - Enlightenment Git
>> > > > > <[email protected]> wrote:
>> > > > >
>> > > > > > raster pushed a commit to branch master.
>> > > > > >
>> > > > > > commit af576fcd8f46c37dfb5fbe0d43240794daf4d460
>> > > > > > Author: Carsten Haitzler (Rasterman) <[email protected]>
>> > > > > > Date:   Wed Sep 4 15:13:26 2013 +0900
>> > > > > >
>> > > > > >     apply show_ready timeout to each new show, not just the first
>> > > > > > one.
>> > > > > > ---
>> > > > > >  src/bin/e_comp.c | 2 ++
>> > > > > >  1 file changed, 2 insertions(+)
>> > > > > >
>> > > > > > diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c
>> > > > > > index aa29677..faf7e9a 100644
>> > > > > > --- a/src/bin/e_comp.c
>> > > > > > +++ b/src/bin/e_comp.c
>> > > > > > @@ -597,6 +597,7 @@ _e_comp_win_update(E_Comp_Win *cw)
>> > > > > >               cw->pixmap = pm;
>> > > > > >               cw->needpix = 0;
>> > > > > >               if (cw->xim) cw->needxim = 1;
>> > > > > > +             cw->show_ready = 0;
>> > > > > >               _e_comp_win_ready_timeout_setup(cw);
>> > > > > >               if ((cw->pw != pw) || (cw->ph != ph)) cw->geom_update
>> > > > > > = 1; DBG("REND [0x%x] pixmap = [0x%x], %ix%i", cw->win,
>> > > > > > cw->pixmap, cw->pw, cw->ph); @@ -2539,6 +2540,7 @@ _e_comp_win_show
>> > > > > > (E_Comp_Win *cw) if (cw->pixmap)
>> > > > > >            {
>> > > > > >               ecore_x_pixmap_geometry_get(cw->pixmap, NULL, NULL, &
>> > > > > > (cw->pw), &(cw->ph));
>> > > > > > +             cw->show_ready = 1;
>> > > > > >               _e_comp_win_ready_timeout_setup(cw);
>> > > > > >               if ((cw->pw != pw) || (cw->ph != ph)) cw->geom_update
>> > > > > > = 1; }
>> > > > > >
>> > > > >
>> > > > > I've been meaning to ask, is there a point to show_ready other than
>> > > > > being legacy?
>> > > >
>> > > > there absolutely is a point. it's not legacy. well with x11 it's not.
>> > > >
>> > >
>> > > okay, so will you share that point?
>> >
>> > oh you wanted to know? you should have asked! :)
>> >
>> > app starts - shows window but has not drawn content yes after expose event.
>> > so content is garbage data until app does. this forces a delay allowing the
>> > app time to draw so when comp has to show the window, it isnt full of
>> > garbage to begin with.
>> >
>>
>> yeah, but it also enforces an arbitrary delay which may or may not be
>> accurate. it seems to me that if you are able to manage the exposes
>> effectively, this timer becomes unnecessary, so I wanted confirmation of
>> that, which you've just given. another day, another comp variable learned.
>
> there is no way to know when the app has actually rendered. a damage event != 
> a
> render. it could be an internal damage as part of an automatic clear thanks to
> initial mapping. it could be PART of the rendering (1 area drawn or the button
> half drawn with bevels and text missing) etc. it could be that, assuming no
> damages are auto-generated on map (i need to double check) that the app has
> already finished drawing, so expecting a damage is wrong.... (or in the case 
> of
> an override redirect window - we missed it)...
>
> the problem is we cant manage the exposes because exposes are generated by the
> xserver itself, and a damage event != a finished draw. this is where wayland
> design is much nicer and cleaner. there are no exposes. when app has a full
> frame ready - it sends the full buffer across. it's done. guaranteed. :)

Well, we should be able to at least improve the situation for EFL
application by creating a window property when the first frame is
pushed. E could listen to that property, cancel the timer when it see
it and draw the window. We could even push that idea to Free Desktop
standard.
-- 
Cedric BAIL

------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to