1 /* 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 #ifndef WEBRTC_MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURE_OPTIONS_H_ 11 #define WEBRTC_MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURE_OPTIONS_H_ 12 13 #include "webrtc/base/constructormagic.h" 14 #include "webrtc/system_wrappers/interface/scoped_refptr.h" 15 16 #if defined(USE_X11) 17 #include "webrtc/modules/desktop_capture/x11/shared_x_display.h" 18 #endif 19 20 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) 21 #include "webrtc/modules/desktop_capture/mac/desktop_configuration_monitor.h" 22 #endif 23 24 namespace webrtc { 25 26 // An object that stores initialization parameters for screen and window 27 // capturers. 28 class DesktopCaptureOptions { 29 public: 30 // Creates an empty Options instance (e.g. without X display). 31 DesktopCaptureOptions(); 32 ~DesktopCaptureOptions(); 33 34 // Returns instance of DesktopCaptureOptions with default parameters. On Linux 35 // also initializes X window connection. x_display() will be set to null if 36 // X11 connection failed (e.g. DISPLAY isn't set). 37 static DesktopCaptureOptions CreateDefault(); 38 39 #if defined(USE_X11) 40 SharedXDisplay* x_display() const { return x_display_; } 41 void set_x_display(scoped_refptr<SharedXDisplay> x_display) { 42 x_display_ = x_display; 43 } 44 #endif 45 46 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) 47 DesktopConfigurationMonitor* configuration_monitor() const { 48 return configuration_monitor_; 49 } 50 void set_configuration_monitor(scoped_refptr<DesktopConfigurationMonitor> m) { 51 configuration_monitor_ = m; 52 } 53 #endif 54 55 // Flag indicating that the capturer should use screen change notifications. 56 // Enables/disables use of XDAMAGE in the X11 capturer. 57 bool use_update_notifications() const { return use_update_notifications_; } 58 void set_use_update_notifications(bool use_update_notifications) { 59 use_update_notifications_ = use_update_notifications; 60 } 61 62 // Flag indicating if desktop effects (e.g. Aero) should be disabled when the 63 // capturer is active. Currently used only on Windows. 64 bool disable_effects() const { return disable_effects_; } 65 void set_disable_effects(bool disable_effects) { 66 disable_effects_ = disable_effects; 67 } 68 69 #if defined(WEBRTC_WIN) 70 bool allow_use_magnification_api() const { 71 return allow_use_magnification_api_; 72 } 73 void set_allow_use_magnification_api(bool allow) { 74 allow_use_magnification_api_ = allow; 75 } 76 #endif 77 78 private: 79 #if defined(USE_X11) 80 scoped_refptr<SharedXDisplay> x_display_; 81 #endif 82 83 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) 84 scoped_refptr<DesktopConfigurationMonitor> configuration_monitor_; 85 #endif 86 87 #if defined(WEBRTC_WIN) 88 bool allow_use_magnification_api_; 89 #endif 90 bool use_update_notifications_; 91 bool disable_effects_; 92 }; 93 94 } // namespace webrtc 95 96 #endif // WEBRTC_MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURE_OPTIONS_H_ 97