Re: [PATCH] mi: sprite: SaveUnderCursor2

2021-03-10 Thread Matt Turner
On Tue, Mar 9, 2021 at 1:20 PM Walter Harms  wrote:
>
> hi Madhurkiran Harikrishnan,
> my experience is that readability reduced rapidly with indent-level.
> I would suggest:
>
>  if ( ! DevHasCursor(pDev) continue;
>
> pCursorInfo = GetSprite(pDev);
>
> if (!pCursorInfo) continue; // just to shrink the if ()
>
>
> // no braces needed
>  if ( pCursorInfo->isUp &&
>pCursorInfo->pScreen == pScreen)
>  miSpriteSaveUnderCursor(pDev, pScreen);

Not using braces here, with a line-wrapped conditional, is a bad idea.
Especially in nested control flow.
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel


Re: [PATCH] mi: sprite: SaveUnderCursor2

2021-03-10 Thread Hans de Goede
Hi,

On 3/9/21 5:34 PM, Madhurkiran Harikrishnan wrote:
> From: Hyun Kwon 
> 
> There is cursor bleeding for the devices which try to acclerate the
> Desktop environment using low powered ARM Mali GPUs. The area under
> the cusrsor is not updated for every swap call within the armsoc,
> resulting in the block artifact.
> 
> Expose miDCSaveUnderCursor2 API, so that other graphics layer like
> armsoc can inoke and save the area under the cursor before actually
> perfroming a swap between the backbuffer and the frontbuffer.

Thank you for the updated version with this nice commit message.

So it seems that this is another approach to fixing the same issue
which I fixed in the modesetting driver with this commit:

https://cgit.freedesktop.org/xorg/xserver/commit/?id=0aaac8d783e78c040a70a55ba8d67809abd7e625

Interesting...

If this works reliable for you, so that you don't need to disable
page-flipping then this seems like a good idea to me.

Regards,

Hans



> 
> Signed-off-by: Hyun Kwon 
> Signed-off-by: Madhurkiran Harikrishnan 
> ---
>  mi/mipointer.h |  2 ++
>  mi/misprite.c  | 17 +
>  2 files changed, 19 insertions(+)
> 
> diff --git a/mi/mipointer.h b/mi/mipointer.h
> index 7ce6409..107b24f 100644
> --- a/mi/mipointer.h
> +++ b/mi/mipointer.h
> @@ -127,4 +127,6 @@ extern _X_EXPORT DevPrivateKeyRec miPointerScreenKeyRec;
>  
>  #define miPointerScreenKey ()
>  
> +extern _X_EXPORT void miDCSaveUnderCursor2(ScreenPtr pScreen);
> +
>  #endif  /* MIPOINTER_H */
> diff --git a/mi/misprite.c b/mi/misprite.c
> index add2c55..46ce9f0 100644
> --- a/mi/misprite.c
> +++ b/mi/misprite.c
> @@ -955,3 +955,20 @@ miSpriteComputeSaved(DeviceIntPtr pDev, ScreenPtr 
> pScreen)
>  pCursorInfo->saved.x2 = pCursorInfo->saved.x1 + w + wpad * 2;
>  pCursorInfo->saved.y2 = pCursorInfo->saved.y1 + h + hpad * 2;
>  }
> +
> +void
> +miDCSaveUnderCursor2(ScreenPtr pScreen)
> +{
> + DeviceIntPtr pDev;
> + miCursorInfoPtr pCursorInfo;
> +
> + for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
> + if (DevHasCursor(pDev)) {
> + pCursorInfo = GetSprite(pDev);
> + if (pCursorInfo && pCursorInfo->isUp
> + && pCursorInfo->pScreen == pScreen) {
> + miSpriteSaveUnderCursor(pDev, pScreen);
> + }
> + }
> + }
> +}
> 

___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel


[PATCH] mi: sprite: SaveUnderCursor2

2021-03-10 Thread Madhurkiran Harikrishnan
From: Hyun Kwon 

There is cursor bleeding for the devices which try to acclerate the
Desktop environment using low powered ARM Mali GPUs. The area under
the cusrsor is not updated for every swap call within the armsoc,
resulting in the block artifact.

Expose miDCSaveUnderCursor2 API, so that other graphics layer like
armsoc can inoke and save the area under the cursor before actually
perfroming a swap between the backbuffer and the frontbuffer.

Signed-off-by: Hyun Kwon 
Signed-off-by: Madhurkiran Harikrishnan 
---
 mi/mipointer.h |  2 ++
 mi/misprite.c  | 17 +
 2 files changed, 19 insertions(+)

diff --git a/mi/mipointer.h b/mi/mipointer.h
index 7ce6409..107b24f 100644
--- a/mi/mipointer.h
+++ b/mi/mipointer.h
@@ -127,4 +127,6 @@ extern _X_EXPORT DevPrivateKeyRec miPointerScreenKeyRec;
 
 #define miPointerScreenKey ()
 
+extern _X_EXPORT void miDCSaveUnderCursor2(ScreenPtr pScreen);
+
 #endif  /* MIPOINTER_H */
diff --git a/mi/misprite.c b/mi/misprite.c
index add2c55..46ce9f0 100644
--- a/mi/misprite.c
+++ b/mi/misprite.c
@@ -955,3 +955,20 @@ miSpriteComputeSaved(DeviceIntPtr pDev, ScreenPtr pScreen)
 pCursorInfo->saved.x2 = pCursorInfo->saved.x1 + w + wpad * 2;
 pCursorInfo->saved.y2 = pCursorInfo->saved.y1 + h + hpad * 2;
 }
+
+void
+miDCSaveUnderCursor2(ScreenPtr pScreen)
+{
+   DeviceIntPtr pDev;
+   miCursorInfoPtr pCursorInfo;
+
+   for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
+   if (DevHasCursor(pDev)) {
+   pCursorInfo = GetSprite(pDev);
+   if (pCursorInfo && pCursorInfo->isUp
+   && pCursorInfo->pScreen == pScreen) {
+   miSpriteSaveUnderCursor(pDev, pScreen);
+   }
+   }
+   }
+}
-- 
2.7.4

___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel