Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(956)

Side by Side Diff: remoting/host/desktop_resizer_mac.cc

Issue 16917011: mac: Replace base::mac::ScopedCFTypeRef with base::ScopedCFTypeRef. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: with fixed off-by-1 in git-clang-format Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « remoting/host/curtain_mode_mac.cc ('k') | remoting/host/input_injector_mac.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/host/desktop_resizer.h" 5 #include "remoting/host/desktop_resizer.h"
6 6
7 #include <Carbon/Carbon.h> 7 #include <Carbon/Carbon.h>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 13 matching lines...) Expand all
24 const SkISize& preferred) OVERRIDE; 24 const SkISize& preferred) OVERRIDE;
25 virtual void SetSize(const SkISize& size) OVERRIDE; 25 virtual void SetSize(const SkISize& size) OVERRIDE;
26 virtual void RestoreSize(const SkISize& original) OVERRIDE; 26 virtual void RestoreSize(const SkISize& original) OVERRIDE;
27 27
28 private: 28 private:
29 // If there is a single display, get its id and return true, otherwise return 29 // If there is a single display, get its id and return true, otherwise return
30 // false. We don't currently support resize-to-client on multi-monitor Macs. 30 // false. We don't currently support resize-to-client on multi-monitor Macs.
31 bool GetSoleDisplayId(CGDirectDisplayID* display); 31 bool GetSoleDisplayId(CGDirectDisplayID* display);
32 32
33 void GetSupportedModesAndSizes( 33 void GetSupportedModesAndSizes(
34 base::mac::ScopedCFTypeRef<CFMutableArrayRef>* modes, 34 base::ScopedCFTypeRef<CFMutableArrayRef>* modes,
35 std::list<SkISize>* sizes); 35 std::list<SkISize>* sizes);
36 36
37 DISALLOW_COPY_AND_ASSIGN(DesktopResizerMac); 37 DISALLOW_COPY_AND_ASSIGN(DesktopResizerMac);
38 }; 38 };
39 39
40 DesktopResizerMac::DesktopResizerMac() {} 40 DesktopResizerMac::DesktopResizerMac() {}
41 41
42 SkISize DesktopResizerMac::GetCurrentSize() { 42 SkISize DesktopResizerMac::GetCurrentSize() {
43 CGDirectDisplayID display; 43 CGDirectDisplayID display;
44 if (!base::mac::IsOSSnowLeopard() && GetSoleDisplayId(&display)) { 44 if (!base::mac::IsOSSnowLeopard() && GetSoleDisplayId(&display)) {
45 CGRect rect = CGDisplayBounds(display); 45 CGRect rect = CGDisplayBounds(display);
46 return SkISize::Make(rect.size.width, rect.size.height); 46 return SkISize::Make(rect.size.width, rect.size.height);
47 } 47 }
48 return SkISize::Make(0, 0); 48 return SkISize::Make(0, 0);
49 } 49 }
50 50
51 std::list<SkISize> DesktopResizerMac::GetSupportedSizes( 51 std::list<SkISize> DesktopResizerMac::GetSupportedSizes(
52 const SkISize& preferred) { 52 const SkISize& preferred) {
53 base::mac::ScopedCFTypeRef<CFMutableArrayRef> modes; 53 base::ScopedCFTypeRef<CFMutableArrayRef> modes;
54 std::list<SkISize> sizes; 54 std::list<SkISize> sizes;
55 GetSupportedModesAndSizes(&modes, &sizes); 55 GetSupportedModesAndSizes(&modes, &sizes);
56 return sizes; 56 return sizes;
57 } 57 }
58 58
59 void DesktopResizerMac::SetSize(const SkISize& size) { 59 void DesktopResizerMac::SetSize(const SkISize& size) {
60 CGDirectDisplayID display; 60 CGDirectDisplayID display;
61 if (base::mac::IsOSSnowLeopard() || !GetSoleDisplayId(&display)) { 61 if (base::mac::IsOSSnowLeopard() || !GetSoleDisplayId(&display)) {
62 return; 62 return;
63 } 63 }
64 64
65 base::mac::ScopedCFTypeRef<CFMutableArrayRef> modes; 65 base::ScopedCFTypeRef<CFMutableArrayRef> modes;
66 std::list<SkISize> sizes; 66 std::list<SkISize> sizes;
67 GetSupportedModesAndSizes(&modes, &sizes); 67 GetSupportedModesAndSizes(&modes, &sizes);
68 // There may be many modes with the requested size. Pick the one with the 68 // There may be many modes with the requested size. Pick the one with the
69 // highest color depth. 69 // highest color depth.
70 int index = 0, best_depth = 0; 70 int index = 0, best_depth = 0;
71 CGDisplayModeRef best_mode = NULL; 71 CGDisplayModeRef best_mode = NULL;
72 for (std::list<SkISize>::const_iterator i = sizes.begin(); i != sizes.end(); 72 for (std::list<SkISize>::const_iterator i = sizes.begin(); i != sizes.end();
73 ++i, ++index) { 73 ++i, ++index) {
74 if (*i == size) { 74 if (*i == size) {
75 CGDisplayModeRef mode = const_cast<CGDisplayModeRef>( 75 CGDisplayModeRef mode = const_cast<CGDisplayModeRef>(
76 static_cast<const CGDisplayMode*>( 76 static_cast<const CGDisplayMode*>(
77 CFArrayGetValueAtIndex(modes, index))); 77 CFArrayGetValueAtIndex(modes, index)));
78 int depth = 0; 78 int depth = 0;
79 base::mac::ScopedCFTypeRef<CFStringRef> encoding( 79 base::ScopedCFTypeRef<CFStringRef> encoding(
80 CGDisplayModeCopyPixelEncoding(mode)); 80 CGDisplayModeCopyPixelEncoding(mode));
81 if (CFStringCompare(encoding, CFSTR(IO32BitDirectPixels), 81 if (CFStringCompare(encoding, CFSTR(IO32BitDirectPixels),
82 kCFCompareCaseInsensitive) == kCFCompareEqualTo) { 82 kCFCompareCaseInsensitive) == kCFCompareEqualTo) {
83 depth = 32; 83 depth = 32;
84 } else if (CFStringCompare( 84 } else if (CFStringCompare(
85 encoding, CFSTR(IO16BitDirectPixels), 85 encoding, CFSTR(IO16BitDirectPixels),
86 kCFCompareCaseInsensitive) == kCFCompareEqualTo) { 86 kCFCompareCaseInsensitive) == kCFCompareEqualTo) {
87 depth = 16; 87 depth = 16;
88 } else if(CFStringCompare( 88 } else if(CFStringCompare(
89 encoding, CFSTR(IO8BitIndexedPixels), 89 encoding, CFSTR(IO8BitIndexedPixels),
(...skipping 11 matching lines...) Expand all
101 << "x" << size.height() << "x" << best_depth << ")"; 101 << "x" << size.height() << "x" << best_depth << ")";
102 CGDisplaySetDisplayMode(display, best_mode, NULL); 102 CGDisplaySetDisplayMode(display, best_mode, NULL);
103 } 103 }
104 } 104 }
105 105
106 void DesktopResizerMac::RestoreSize(const SkISize& original) { 106 void DesktopResizerMac::RestoreSize(const SkISize& original) {
107 SetSize(original); 107 SetSize(original);
108 } 108 }
109 109
110 void DesktopResizerMac::GetSupportedModesAndSizes( 110 void DesktopResizerMac::GetSupportedModesAndSizes(
111 base::mac::ScopedCFTypeRef<CFMutableArrayRef>* modes, 111 base::ScopedCFTypeRef<CFMutableArrayRef>* modes,
112 std::list<SkISize>* sizes) { 112 std::list<SkISize>* sizes) {
113 CGDirectDisplayID display; 113 CGDirectDisplayID display;
114 if (GetSoleDisplayId(&display)) { 114 if (GetSoleDisplayId(&display)) {
115 base::mac::ScopedCFTypeRef<CFArrayRef> 115 base::ScopedCFTypeRef<CFArrayRef> all_modes(
116 all_modes(CGDisplayCopyAllDisplayModes(display, NULL)); 116 CGDisplayCopyAllDisplayModes(display, NULL));
117 modes->reset(CFArrayCreateMutableCopy(NULL, 0, all_modes)); 117 modes->reset(CFArrayCreateMutableCopy(NULL, 0, all_modes));
118 CFIndex count = CFArrayGetCount(*modes); 118 CFIndex count = CFArrayGetCount(*modes);
119 for (CFIndex i = 0; i < count; ++i) { 119 for (CFIndex i = 0; i < count; ++i) {
120 CGDisplayModeRef mode = const_cast<CGDisplayModeRef>( 120 CGDisplayModeRef mode = const_cast<CGDisplayModeRef>(
121 static_cast<const CGDisplayMode*>( 121 static_cast<const CGDisplayMode*>(
122 CFArrayGetValueAtIndex(*modes, i))); 122 CFArrayGetValueAtIndex(*modes, i)));
123 if (CGDisplayModeIsUsableForDesktopGUI(mode)) { 123 if (CGDisplayModeIsUsableForDesktopGUI(mode)) {
124 SkISize size = SkISize::Make(CGDisplayModeGetWidth(mode), 124 SkISize size = SkISize::Make(CGDisplayModeGetWidth(mode),
125 CGDisplayModeGetHeight(mode)); 125 CGDisplayModeGetHeight(mode));
126 sizes->push_back(size); 126 sizes->push_back(size);
(...skipping 18 matching lines...) Expand all
145 } 145 }
146 *display = displays[0]; 146 *display = displays[0];
147 return true; 147 return true;
148 } 148 }
149 149
150 scoped_ptr<DesktopResizer> DesktopResizer::Create() { 150 scoped_ptr<DesktopResizer> DesktopResizer::Create() {
151 return scoped_ptr<DesktopResizer>(new DesktopResizerMac); 151 return scoped_ptr<DesktopResizer>(new DesktopResizerMac);
152 } 152 }
153 153
154 } // namespace remoting 154 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/curtain_mode_mac.cc ('k') | remoting/host/input_injector_mac.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698