aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornyamatongwe <unknown>2011-06-05 10:05:37 +1000
committernyamatongwe <unknown>2011-06-05 10:05:37 +1000
commit9433503c3000ad9408f38ebd19e759f51ef44c01 (patch)
tree95732929b66db495f69aa4aa29b9dcc60bb6bed7
parentb78fcd78a98d59f6f42ccecb7be229a382af27dd (diff)
downloadscintilla-mirror-9433503c3000ad9408f38ebd19e759f51ef44c01.tar.gz
Cache surface resolution as it is slow and is called
for every font creation.
-rw-r--r--cocoa/PlatCocoa.h2
-rw-r--r--cocoa/PlatCocoa.mm10
2 files changed, 9 insertions, 3 deletions
diff --git a/cocoa/PlatCocoa.h b/cocoa/PlatCocoa.h
index 3e0aa09d8..0653bc728 100644
--- a/cocoa/PlatCocoa.h
+++ b/cocoa/PlatCocoa.h
@@ -49,6 +49,8 @@ private:
/** The text layout instance */
QuartzTextLayout* textLayout;
int codePage;
+ int verticalDeviceResolution;
+
/** If the surface is a bitmap context, contains a reference to the bitmap data. */
uint8_t* bitmapData;
/** If the surface is a bitmap context, stores the dimensions of the bitmap. */
diff --git a/cocoa/PlatCocoa.mm b/cocoa/PlatCocoa.mm
index f7db513c6..1f8a54a4c 100644
--- a/cocoa/PlatCocoa.mm
+++ b/cocoa/PlatCocoa.mm
@@ -384,9 +384,13 @@ CGImageRef SurfaceImpl::GetImage()
*/
int SurfaceImpl::LogPixelsY()
{
- NSSize deviceResolution = [[[[NSScreen mainScreen] deviceDescription]
- objectForKey: NSDeviceResolution] sizeValue];
- return (int) deviceResolution.height;
+ if (verticalDeviceResolution == 0)
+ {
+ NSSize deviceResolution = [[[[NSScreen mainScreen] deviceDescription]
+ objectForKey: NSDeviceResolution] sizeValue];
+ verticalDeviceResolution = (int) deviceResolution.height;
+ }
+ return verticalDeviceResolution;
}
//--------------------------------------------------------------------------------------------------