@@ -233,13 +233,12 @@ Bool drawSquares() {
233
233
LoriePixmapPriv * priv = lorieRootWindowPixmapPriv ();
234
234
uint32_t * pixels = !priv ? NULL : priv -> locked ;
235
235
if (pixels ) {
236
- LorieBuffer_Desc d = {0 };
237
- LorieBuffer_describe (priv -> buffer , & d );
238
- int l = min (d .width , d .height ) / 4 , x = (d .width - l )/2 , y = (d .height - l )/2 ;
236
+ const LorieBuffer_Desc * d = LorieBuffer_description (priv -> buffer );
237
+ int l = min (d -> width , d -> height ) / 4 , x = (d -> width - l )/2 , y = (d -> height - l )/2 ;
239
238
240
- drawSquare (x - l /3 , y - l /3 , l , 0x00FF0000 , d . stride , pixels );
241
- drawSquare (x , y , l , 0x0000FF00 , d . stride , pixels );
242
- drawSquare (x + l /3 , y + l /3 , l , 0x000000FF , d . stride , pixels );
239
+ drawSquare (x - l /3 , y - l /3 , l , 0x00FF0000 , d -> stride , pixels );
240
+ drawSquare (x , y , l , 0x0000FF00 , d -> stride , pixels );
241
+ drawSquare (x + l /3 , y + l /3 , l , 0x000000FF , d -> stride , pixels );
243
242
}
244
243
245
244
return FALSE;
@@ -443,7 +442,7 @@ static Bool lorieRedraw(__unused ClientPtr pClient, __unused void *closure) {
443
442
// Also according to AHardwareBuffer docs simultaneous reading in rendering thread and
444
443
// locking for writing in other thread is fine.
445
444
LorieBuffer_unlock (priv -> buffer );
446
- status = LorieBuffer_lock (priv -> buffer , NULL , & priv -> locked );
445
+ status = LorieBuffer_lock (priv -> buffer , & priv -> locked );
447
446
if (status )
448
447
FatalError ("Failed to lock the surface: %d\n" , status );
449
448
@@ -778,29 +777,24 @@ void lorieSetVM(JavaVM* vm) {
778
777
779
778
void exaDDXDriverInit (__unused ScreenPtr pScreen ) {}
780
779
781
- void * lorieCreatePixmap (__unused ScreenPtr pScreen , int width , int height , __unused int depth , int usage_hint , int bpp , int * new_fb_pitch ) {
780
+ void * lorieCreatePixmap (__unused ScreenPtr pScreen , int width , int height , __unused int depth , int usage_hint , __unused int bpp , int * new_fb_pitch ) {
782
781
LoriePixmapPriv * priv ;
783
782
size_t size = sizeof (LoriePixmapPriv );
784
- * new_fb_pitch = ((width * bpp + FB_MASK ) >> FB_SHIFT ) * sizeof (FbBits );
785
-
786
- if (usage_hint != CREATE_PIXMAP_USAGE_LORIEBUFFER_BACKED )
787
- size += * new_fb_pitch * height ;
783
+ * new_fb_pitch = 0 ;
788
784
789
785
priv = calloc (1 , size );
790
786
if (!priv )
791
787
return NULL ;
792
788
793
- if (usage_hint != CREATE_PIXMAP_USAGE_LORIEBUFFER_BACKED )
789
+ if (width == 0 || height == 0 )
794
790
return priv ;
795
791
796
- uint8_t type = pvfb -> root .legacyDrawing ? LORIEBUFFER_REGULAR : LORIEBUFFER_AHARDWAREBUFFER ;
792
+ uint8_t type = usage_hint != CREATE_PIXMAP_USAGE_LORIEBUFFER_BACKED ? LORIEBUFFER_REGULAR : pvfb -> root .legacyDrawing ? LORIEBUFFER_FD : LORIEBUFFER_AHARDWAREBUFFER ;
797
793
uint8_t format = pvfb -> root .flip ? AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM : AHARDWAREBUFFER_FORMAT_B8G8R8A8_UNORM ;
798
794
priv -> buffer = LorieBuffer_allocate (width , height , format , type );
799
- LorieBuffer_Desc d = {0 };
800
- LorieBuffer_describe (priv -> buffer , & d );
801
- * new_fb_pitch = d .stride * 4 ;
795
+ * new_fb_pitch = LorieBuffer_description (priv -> buffer )-> stride * 4 ;
802
796
803
- LorieBuffer_lock (priv -> buffer , NULL , & priv -> locked );
797
+ LorieBuffer_lock (priv -> buffer , & priv -> locked );
804
798
if (!priv -> buffer ) {
805
799
free (priv );
806
800
return NULL ;
0 commit comments