Re: [hatari-devel] Suggested patch to fix the SDL GUI on KMS/DRM

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Am Sun, 1 Nov 2020 09:50:11 +0100
schrieb Christer Solskogen <christer.solskogen@xxxxxxxxx>:

> On Sun, Nov 1, 2020 at 9:37 AM Thomas Huth <th.huth@xxxxxxxxx> wrote:
> 
> > Am Sun, 1 Nov 2020 09:22:29 +0100
> > schrieb Christer Solskogen <christer.solskogen@xxxxxxxxx>:
> >  
> > > On Sun, Nov 1, 2020 at 7:17 AM Thomas Huth <th.huth@xxxxxxxxx>
> > > wrote: 
> > > > Am Sat, 31 Oct 2020 09:11:08 +0100
> > > > schrieb Nicolas Pomarède <npomarede@xxxxxxxxxxxx>:
> > > >
> > > > I've now added a slightly more complex patch which only calls
> > > > this function if hardware accelerated rendering is used. So
> > > > with software rendering, we can still spare these cycles, and
> > > > with hardware rendering it should not matter too much from a
> > > > performance point of view anyway, so we should be on the safe
> > > > side here now.
> > > >
> > > >  
> > > It's still a bit buggy. Pressing the buttons in the menu doesn't
> > > work properly. It seems to me it's missing a redraw or something
> > > like that.  
> >
> > Where is it buggy? On the Rasberri Pi? Wayland? Both? Does it work
> > if you change SDL_UpdateRects() to call SDL_RenderClear()
> > unconditionally?
> >
> >  
> On the Pi, using SDL2 with KMS/DRM. Not with Wayland.
> I don't quite understand what you  mean (I'm not a developer), but if
> you can provide me either a patch or a description on how, I can
> easily test.

Could you please remove the "if (!bIsSoftwareRenderer)" line in
SDL_UpdateRects() in src/screen.c, so that SDL_RenderClear(sdlRenderer)
is always called there:

diff --git a/src/screen.c b/src/screen.c
--- a/src/screen.c
+++ b/src/screen.c
@@ -117,8 +117,7 @@ void SDL_UpdateRects(SDL_Surface *screen, int numrects, SDL_Rect *rects)
        {
                SDL_UpdateTexture(sdlTexture, NULL, screen->pixels, screen->pitch);
                /* Need to clear the renderer context for certain accelerated cards */
-               if (!bIsSoftwareRenderer)
-                       SDL_RenderClear(sdlRenderer);
+               SDL_RenderClear(sdlRenderer);
                SDL_RenderCopy(sdlRenderer, sdlTexture, NULL, NULL);
                SDL_RenderPresent(sdlRenderer);
        }

That would be helpful to see whether the bIsSoftwareRenderer detection
is wrong, or whether there is another problem somewhere else.

 Thomas



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/