1/* |
2 * Copyright (c) 2010, 2015 ARM Limited |
3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 30 unchanged lines hidden (view full) --- 41/** @file 42 * Declaration of a VNC input 43 */ 44 45#ifndef __BASE_VNC_VNC_INPUT_HH__ 46#define __BASE_VNC_VNC_INPUT_HH__ 47 48#include <iostream> |
49#include <memory> |
50 |
51#include "base/bitmap.hh" 52#include "params/VncInput.hh" 53#include "sim/sim_object.hh" 54 55/** 56 * A device that expects to receive input from the vnc server should derrive 57 * (through mulitple inheritence if necessary from VncKeyboard or VncMouse 58 * and call setKeyboard() or setMouse() respectively on the vnc server. --- 96 unchanged lines hidden (view full) --- 155 typedef VncInputParams Params; 156 VncInput(const Params *p); 157 158 /** Set the address of the frame buffer we are going to show. 159 * To avoid copying, just have the display controller 160 * tell us where the data is instead of constanly copying it around 161 * @param rfb frame buffer that we're going to use 162 */ |
163 virtual void setFrameBuffer(const FrameBuffer *rfb); |
164 165 /** Set up the device that would like to receive notifications when keys are 166 * pressed in the vnc client keyboard 167 * @param _keyboard an object that derrives from VncKeyboard 168 */ 169 void setKeyboard(VncKeyboard *_keyboard) { keyboard = _keyboard; } 170 171 /** Setup the device that would like to receive notifications when mouse --- 15 unchanged lines hidden (view full) --- 187 * @return the height of the simulated screen 188 */ 189 uint16_t videoHeight() const { return _videoHeight; } 190 191 /** The frame buffer uses this call to notify the vnc server that 192 * the frame buffer has been updated and a new image needs to be sent to the 193 * client 194 */ |
195 virtual void setDirty(); |
196 |
197 protected: |
198 virtual void frameBufferResized() {}; 199 |
200 /** The device to notify when we get key events */ 201 VncKeyboard *keyboard; 202 203 /** The device to notify when we get mouse events */ 204 VncMouse *mouse; 205 |
206 /** pointer to the actual data that is stored in the frame buffer device */ |
207 const FrameBuffer *fb; |
208 |
209 /** the width of the frame buffer we are sending to the client */ 210 uint16_t _videoWidth; 211 212 /** the height of the frame buffer we are sending to the client */ 213 uint16_t _videoHeight; 214 215 /** Flag indicating whether to capture snapshots of frame buffer or not */ 216 bool captureEnabled; 217 218 /** Current frame number being captured to a file */ 219 int captureCurrentFrame; 220 221 /** Directory to store captured frames to */ 222 std::string captureOutputDirectory; 223 224 /** Computed hash of the last captured frame */ 225 uint64_t captureLastHash; 226 227 /** Cached bitmap object for writing out frame buffers to file */ |
228 std::unique_ptr<Bitmap> captureBitmap; |
229 230 /** Captures the current frame buffer to a file */ 231 void captureFrameBuffer(); 232}; 233#endif |