mfreerdp: fix crash with <32bpp color depths
authorMarc-André Moreau <marcandre.moreau@gmail.com>
Sun, 19 Oct 2014 01:31:24 +0000 (21:31 -0400)
committerMarc-André Moreau <marcandre.moreau@gmail.com>
Sun, 19 Oct 2014 01:31:24 +0000 (21:31 -0400)
client/Mac/MRDPView.m

index 48c4430..ea6a8e9 100644 (file)
@@ -944,10 +944,10 @@ BOOL mac_post_connect(freerdp* instance)
        
        flags = CLRCONV_ALPHA | CLRCONV_RGB555;
        
-       if (settings->ColorDepth > 16)
+       //if (settings->ColorDepth > 16)
                flags |= CLRBUF_32BPP;
-       else
-               flags |= CLRBUF_16BPP;
+       //else
+       //      flags |= CLRBUF_16BPP;
        
        gdi_init(instance, flags, NULL);
        gdi = instance->context->gdi;
@@ -1120,17 +1120,17 @@ CGContextRef mac_create_bitmap_context(rdpContext* context)
        
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        
-       if (gdi->dstBpp == 16)
+       if (gdi->bytesPerPixel == 2)
        {
                bitmap_context = CGBitmapContextCreate(gdi->primary_buffer,
-                                                      gdi->width, gdi->height, 5, gdi->width * 2, colorSpace,
-                                                      kCGBitmapByteOrder16Little | kCGImageAlphaNoneSkipFirst);
+                                                      gdi->width, gdi->height, 5, gdi->width * gdi->bytesPerPixel,
+                                                      colorSpace, kCGBitmapByteOrder16Little | kCGImageAlphaNoneSkipFirst);
        }
        else
        {
                bitmap_context = CGBitmapContextCreate(gdi->primary_buffer,
-                                                      gdi->width, gdi->height, 8, gdi->width * 4, colorSpace,
-                                                      kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst);
+                                                      gdi->width, gdi->height, 8, gdi->width * gdi->bytesPerPixel,
+                                                      colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst);
        }
        
        CGColorSpaceRelease(colorSpace);