diff options
author | Pierre Ossman <ossman@cendio.se> | 2014-02-07 14:46:26 +0100 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2014-07-07 14:50:28 +0200 |
commit | ac13abe4ce9f74522acd9697a08dc56de8e2949f (patch) | |
tree | 4eb0fdaa6cf22d0e06f63b9cb1a03063f5f21c27 /vncviewer/OSXPixelBuffer.cxx | |
parent | 668468b3d43d5ea1562ebc0be8de0c98c5601a60 (diff) | |
download | tigervnc-ac13abe4ce9f74522acd9697a08dc56de8e2949f.tar.gz tigervnc-ac13abe4ce9f74522acd9697a08dc56de8e2949f.zip |
Create a proper interface base class for the viewport's framebuffer
This allows us to gracefully fall back to the FLTK code in case the
platform specific code cannot be used.
Diffstat (limited to 'vncviewer/OSXPixelBuffer.cxx')
-rw-r--r-- | vncviewer/OSXPixelBuffer.cxx | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/vncviewer/OSXPixelBuffer.cxx b/vncviewer/OSXPixelBuffer.cxx index 0e03fc98..fc216a12 100644 --- a/vncviewer/OSXPixelBuffer.cxx +++ b/vncviewer/OSXPixelBuffer.cxx @@ -1,4 +1,4 @@ -/* Copyright 2011 Pierre Ossman <ossman@cendio.se> for Cendio AB +/* Copyright 2011-2014 Pierre Ossman for Cendio AB * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,16 +34,20 @@ using namespace rfb; -static rfb::LogWriter vlog("PlatformPixelBuffer"); +static rfb::LogWriter vlog("OSXPixelBuffer"); -PlatformPixelBuffer::PlatformPixelBuffer(int width, int height) : - ManagedPixelBuffer(rfb::PixelFormat(32, 24, false, true, - 255, 255, 255, 16, 8, 0), - width, height), +OSXPixelBuffer::OSXPixelBuffer(int width, int height) : + PlatformPixelBuffer(rfb::PixelFormat(32, 24, false, true, + 255, 255, 255, 16, 8, 0), + width, height, NULL), bitmap(NULL) { CGColorSpaceRef lut; + data = new rdr::U8[width * height * format.bpp/8]; + if (data == NULL) + throw rfb::Exception("Error: Not enough memory for framebuffer"); + lut = CGColorSpaceCreateDeviceRGB(); assert(lut); @@ -55,13 +59,14 @@ PlatformPixelBuffer::PlatformPixelBuffer(int width, int height) : } -PlatformPixelBuffer::~PlatformPixelBuffer() +OSXPixelBuffer::~OSXPixelBuffer() { CFRelease((CGContextRef)bitmap); + delete [] data; } -void PlatformPixelBuffer::draw(int src_x, int src_y, int x, int y, int w, int h) +void OSXPixelBuffer::draw(int src_x, int src_y, int x, int y, int w, int h) { CGRect rect; CGContextRef gc; |