1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "remoting/host/ipc_mouse_cursor_monitor.h" 6 7#include "remoting/host/desktop_session_proxy.h" 8#include "third_party/webrtc/modules/desktop_capture/mouse_cursor.h" 9 10namespace remoting { 11 12IpcMouseCursorMonitor::IpcMouseCursorMonitor( 13 scoped_refptr<DesktopSessionProxy> desktop_session_proxy) 14 : callback_(NULL), 15 desktop_session_proxy_(desktop_session_proxy), 16 weak_factory_(this) { 17} 18 19IpcMouseCursorMonitor::~IpcMouseCursorMonitor() {} 20 21void IpcMouseCursorMonitor::Init(Callback* callback, Mode mode) { 22 DCHECK(!callback_); 23 DCHECK(callback); 24 DCHECK_EQ(webrtc::MouseCursorMonitor::SHAPE_ONLY, mode); 25 callback_ = callback; 26 desktop_session_proxy_->SetMouseCursorMonitor(weak_factory_.GetWeakPtr()); 27} 28 29void IpcMouseCursorMonitor::Capture() { 30 // Ignore. DesktopSessionAgent will capture the cursor at the same time it 31 // captures a screen frame when |IpcVideoFrameCapturer::Capture()| is called. 32 // This saves an IPC roundtrip. 33} 34 35void IpcMouseCursorMonitor::OnMouseCursor( 36 scoped_ptr<webrtc::MouseCursor> cursor) { 37 DCHECK(callback_); 38 callback_->OnMouseCursor(cursor.release()); 39} 40 41} // namespace remoting 42 43