Xrender cursor performance / double buffering?

Dan Williams dcbw at redhat.com
Tue Apr 17 10:05:11 EDT 2007


On Tue, 2007-04-17 at 12:21 +0200, Bert Freudenberg wrote:
> Hi folks,
> 
> for drag'n'dropping an image between an activity and the sugar frame  
> I thought it would be nice to just set it as cursor. This way, it  
> gets rendered on top of both the activity and the frame.

Cursors can be hardware accelerated up to a point.  See section 6.5.1.3
of the AMD Geode GX2 data book.




> This works nicely on my desktop machine. It also works nicely on the  
> XO, as long as there is nothing animating behind the cursor. If there  
> is, however, some animation still going while dragging, the  
> background and cursor image gets redrawn constantly. Even if the  
> cursor is as small as 100x100 pixels this is very visible, apparently  
> there is no double-buffering. So, the following is my code to set the  
> cursor image - should I do something differently?
> 
>    //input: cursorBits (32bit ARGB premul), extentX, extentY,  
> offsetX, offsetY
>    XImage *image = XCreateImage(stDisplay, DefaultVisual(stDisplay,  
> DefaultScreen(stDisplay)),
>                                 32, ZPixmap, 0, cursorBits, extentX,  
> extentY, 32, 0);
>    Pixmap pixmap = XCreatePixmap (stDisplay, DefaultRootWindow 
> (stDisplay), extentX, extentY, 32);
>    GC gc = XCreateGC(stDisplay, pixmap, 0, 0);
>    XPutImage(stDisplay, pixmap, gc, image, 0, 0, 0, 0, extentX,  
> extentY);
>    image->data = 0; //otherwise, XDestroyImage tries to free this
>    XRenderPictFormat *pictformat = XRenderFindStandardFormat 
> (stDisplay, PictStandardARGB32);
>    Picture picture = XRenderCreatePicture(stDisplay, pixmap,  
> pictformat, 0, 0);
>    Cursor cursor = XRenderCreateCursor(stDisplay, picture, offsetX,  
> offsetY);
>    XDefineCursor(stDisplay, stWindow, cursor);
> 
> Ideas appreciated - or will the LX make this work magically? This is  
> a B2.
> 
> - Bert -
> 
> 
> _______________________________________________
> Devel mailing list
> Devel at laptop.org
> http://mailman.laptop.org/mailman/listinfo/devel




More information about the Devel mailing list