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

Side by Side Diff: ui/gfx/ozone/dri/dri_surface_factory.cc

Issue 208553004: ozone: dri: Do initial cursor set (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: move cursor swap buffers Created 6 years, 8 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 | « ui/gfx/ozone/dri/dri_surface_factory.h ('k') | ui/gfx/ozone/dri/hardware_display_controller.h » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "ui/gfx/ozone/dri/dri_surface_factory.h" 5 #include "ui/gfx/ozone/dri/dri_surface_factory.h"
6 6
7 #include <drm.h> 7 #include <drm.h>
8 #include <errno.h> 8 #include <errno.h>
9 #include <xf86drm.h> 9 #include <xf86drm.h>
10 10
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 } 204 }
205 205
206 // Bind the surface to the controller. This will register the backing buffers 206 // Bind the surface to the controller. This will register the backing buffers
207 // with the hardware CRTC such that we can show the buffers. The controller 207 // with the hardware CRTC such that we can show the buffers. The controller
208 // takes ownership of the surface. 208 // takes ownership of the surface.
209 if (!controller_->BindSurfaceToController(surface.Pass())) { 209 if (!controller_->BindSurfaceToController(surface.Pass())) {
210 LOG(ERROR) << "Failed to bind surface to controller"; 210 LOG(ERROR) << "Failed to bind surface to controller";
211 return gfx::kNullAcceleratedWidget; 211 return gfx::kNullAcceleratedWidget;
212 } 212 }
213 213
214 // Initial cursor set.
215 ResetCursor();
216
214 return reinterpret_cast<gfx::AcceleratedWidget>(controller_->get_surface()); 217 return reinterpret_cast<gfx::AcceleratedWidget>(controller_->get_surface());
215 } 218 }
216 219
217 bool DriSurfaceFactory::LoadEGLGLES2Bindings( 220 bool DriSurfaceFactory::LoadEGLGLES2Bindings(
218 AddGLLibraryCallback add_gl_library, 221 AddGLLibraryCallback add_gl_library,
219 SetGLGetProcAddressProcCallback set_gl_get_proc_address) { 222 SetGLGetProcAddressProcCallback set_gl_get_proc_address) {
220 return false; 223 return false;
221 } 224 }
222 225
223 bool DriSurfaceFactory::AttemptToResizeAcceleratedWidget( 226 bool DriSurfaceFactory::AttemptToResizeAcceleratedWidget(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 269
267 scoped_ptr<gfx::VSyncProvider> DriSurfaceFactory::CreateVSyncProvider( 270 scoped_ptr<gfx::VSyncProvider> DriSurfaceFactory::CreateVSyncProvider(
268 gfx::AcceleratedWidget w) { 271 gfx::AcceleratedWidget w) {
269 CHECK(state_ == INITIALIZED); 272 CHECK(state_ == INITIALIZED);
270 return scoped_ptr<VSyncProvider>(new DriVSyncProvider(controller_.get())); 273 return scoped_ptr<VSyncProvider>(new DriVSyncProvider(controller_.get()));
271 } 274 }
272 275
273 void DriSurfaceFactory::SetHardwareCursor(gfx::AcceleratedWidget window, 276 void DriSurfaceFactory::SetHardwareCursor(gfx::AcceleratedWidget window,
274 const SkBitmap& image, 277 const SkBitmap& image,
275 const gfx::Point& location) { 278 const gfx::Point& location) {
279 cursor_bitmap_ = image;
280 cursor_location_ = location;
281
276 if (state_ != INITIALIZED) 282 if (state_ != INITIALIZED)
277 return; 283 return;
278 284
279 UpdateCursorImage(cursor_surface_.get(), image); 285 ResetCursor();
280 controller_->MoveCursor(location);
281 controller_->SetCursor(*cursor_surface_.get());
282 cursor_surface_->SwapBuffers();
283 } 286 }
284 287
285 void DriSurfaceFactory::MoveHardwareCursor(gfx::AcceleratedWidget window, 288 void DriSurfaceFactory::MoveHardwareCursor(gfx::AcceleratedWidget window,
286 const gfx::Point& location) { 289 const gfx::Point& location) {
290 cursor_location_ = location;
291
287 if (state_ != INITIALIZED) 292 if (state_ != INITIALIZED)
288 return; 293 return;
289 294
290 controller_->MoveCursor(location); 295 controller_->MoveCursor(location);
291 } 296 }
292 297
293 void DriSurfaceFactory::UnsetHardwareCursor(gfx::AcceleratedWidget window) { 298 void DriSurfaceFactory::UnsetHardwareCursor(gfx::AcceleratedWidget window) {
299 cursor_bitmap_.reset();
300
294 if (state_ != INITIALIZED) 301 if (state_ != INITIALIZED)
295 return; 302 return;
296 303
297 controller_->UnsetCursor(); 304 ResetCursor();
298 } 305 }
299 306
300 //////////////////////////////////////////////////////////////////////////////// 307 ////////////////////////////////////////////////////////////////////////////////
301 // DriSurfaceFactory private 308 // DriSurfaceFactory private
302 309
303 DriSurface* DriSurfaceFactory::CreateSurface(const gfx::Size& size) { 310 DriSurface* DriSurfaceFactory::CreateSurface(const gfx::Size& size) {
304 return new DriSurface(drm_.get(), size); 311 return new DriSurface(drm_.get(), size);
305 } 312 }
306 313
307 DriWrapper* DriSurfaceFactory::CreateWrapper() { 314 DriWrapper* DriSurfaceFactory::CreateWrapper() {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 void DriSurfaceFactory::WaitForPageFlipEvent(int fd) { 367 void DriSurfaceFactory::WaitForPageFlipEvent(int fd) {
361 drmEventContext drm_event; 368 drmEventContext drm_event;
362 drm_event.version = DRM_EVENT_CONTEXT_VERSION; 369 drm_event.version = DRM_EVENT_CONTEXT_VERSION;
363 drm_event.page_flip_handler = HandlePageFlipEvent; 370 drm_event.page_flip_handler = HandlePageFlipEvent;
364 drm_event.vblank_handler = NULL; 371 drm_event.vblank_handler = NULL;
365 372
366 // Wait for the page-flip to complete. 373 // Wait for the page-flip to complete.
367 drmHandleEvent(fd, &drm_event); 374 drmHandleEvent(fd, &drm_event);
368 } 375 }
369 376
377 void DriSurfaceFactory::ResetCursor() {
378 if (!cursor_bitmap_.empty()) {
379 // Draw new cursor into backbuffer.
380 UpdateCursorImage(cursor_surface_.get(), cursor_bitmap_);
381
382 // Reset location & buffer.
383 controller_->MoveCursor(cursor_location_);
384 controller_->SetCursor(cursor_surface_.get());
385 } else {
386 // No cursor set.
387 controller_->UnsetCursor();
388 }
389 }
390
391
370 } // namespace gfx 392 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/ozone/dri/dri_surface_factory.h ('k') | ui/gfx/ozone/dri/hardware_display_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698