On Thu, 5 Sep 2013 07:56:26 +0200 Cedric BAIL <[email protected]> said:

> 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.

already got this in efl. its much more complex as it ALSO handles full
compositor sync while rendering. the problem is that i turned it off because
sometimes it gets hung/stuck AND it caused considerable slowdowns in resize
(half the framerate). i gave up trying to debug it and turned it off. the much
nicer solution is pretty much what wayland does - send entire buffers/pixmaps.
we could do that in efl instead of compositing. use the window ONLY as input
and send frames as pixmap buffers...

but i'm just of the opinion that we're on our way to wayland.. so just move
that way and be done with it.

-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [email protected]


------------------------------------------------------------------------------
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