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

Unified Diff: ui/ozone/platform/dri/dri_surface_factory.cc

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/ozone/platform/dri/dri_surface_factory.h ('k') | ui/ozone/platform/dri/dri_surface_factory_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/ozone/platform/dri/dri_surface_factory.cc
diff --git a/ui/ozone/platform/dri/dri_surface_factory.cc b/ui/ozone/platform/dri/dri_surface_factory.cc
deleted file mode 100644
index fb8ce756d80e37ba58a5270f7d1fd5cb1c2003c4..0000000000000000000000000000000000000000
--- a/ui/ozone/platform/dri/dri_surface_factory.cc
+++ /dev/null
@@ -1,184 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ui/ozone/platform/dri/dri_surface_factory.h"
-
-#include <errno.h>
-
-#include "base/debug/trace_event.h"
-#include "third_party/skia/include/core/SkBitmap.h"
-#include "third_party/skia/include/core/SkDevice.h"
-#include "third_party/skia/include/core/SkSurface.h"
-#include "ui/gfx/native_widget_types.h"
-#include "ui/ozone/platform/dri/dri_buffer.h"
-#include "ui/ozone/platform/dri/dri_surface.h"
-#include "ui/ozone/platform/dri/dri_util.h"
-#include "ui/ozone/platform/dri/dri_window_delegate_impl.h"
-#include "ui/ozone/platform/dri/dri_window_delegate_manager.h"
-#include "ui/ozone/platform/dri/dri_wrapper.h"
-#include "ui/ozone/platform/dri/hardware_display_controller.h"
-#include "ui/ozone/platform/dri/screen_manager.h"
-#include "ui/ozone/public/surface_ozone_canvas.h"
-
-namespace ui {
-
-namespace {
-
-// TODO(dnicoara) Read the cursor plane size from the hardware.
-const gfx::Size kCursorSize(64, 64);
-
-void UpdateCursorImage(DriBuffer* cursor, const SkBitmap& image) {
- SkRect damage;
- image.getBounds(&damage);
-
- // Clear to transparent in case |image| is smaller than the canvas.
- SkCanvas* canvas = cursor->GetCanvas();
- canvas->clear(SK_ColorTRANSPARENT);
-
- SkRect clip;
- clip.set(
- 0, 0, canvas->getDeviceSize().width(), canvas->getDeviceSize().height());
- canvas->clipRect(clip, SkRegion::kReplace_Op);
- canvas->drawBitmapRectToRect(image, &damage, damage);
-}
-
-} // namespace
-
-// static
-const gfx::AcceleratedWidget DriSurfaceFactory::kDefaultWidgetHandle = 1;
-
-DriSurfaceFactory::DriSurfaceFactory(DriWrapper* drm,
- ScreenManager* screen_manager,
- DriWindowDelegateManager* window_manager)
- : drm_(drm),
- screen_manager_(screen_manager),
- window_manager_(window_manager),
- state_(UNINITIALIZED),
- cursor_frontbuffer_(0),
- cursor_widget_(0),
- cursor_frame_(0),
- cursor_frame_delay_ms_(0) {
-}
-
-DriSurfaceFactory::~DriSurfaceFactory() {
- if (state_ == INITIALIZED)
- ShutdownHardware();
-}
-
-DriSurfaceFactory::HardwareState DriSurfaceFactory::InitializeHardware() {
- if (state_ != UNINITIALIZED)
- return state_;
-
- if (drm_->get_fd() < 0) {
- LOG(ERROR) << "Failed to create DRI connection";
- state_ = FAILED;
- return state_;
- }
-
- SkImageInfo info = SkImageInfo::MakeN32Premul(kCursorSize.width(),
- kCursorSize.height());
- for (size_t i = 0; i < arraysize(cursor_buffers_); ++i) {
- cursor_buffers_[i] = new DriBuffer(drm_);
- if (!cursor_buffers_[i]->Initialize(info)) {
- LOG(ERROR) << "Failed to initialize cursor buffer";
- state_ = FAILED;
- return state_;
- }
- }
-
- state_ = INITIALIZED;
- return state_;
-}
-
-void DriSurfaceFactory::ShutdownHardware() {
- DCHECK(state_ == INITIALIZED);
- state_ = UNINITIALIZED;
-}
-
-scoped_ptr<ui::SurfaceOzoneCanvas> DriSurfaceFactory::CreateCanvasForWidget(
- gfx::AcceleratedWidget widget) {
- DCHECK(state_ == INITIALIZED);
-
- return scoped_ptr<ui::SurfaceOzoneCanvas>(
- new DriSurface(window_manager_->GetWindowDelegate(widget), drm_));
-}
-
-bool DriSurfaceFactory::LoadEGLGLES2Bindings(
- AddGLLibraryCallback add_gl_library,
- SetGLGetProcAddressProcCallback set_gl_get_proc_address) {
- return false;
-}
-
-void DriSurfaceFactory::SetHardwareCursor(gfx::AcceleratedWidget widget,
- const std::vector<SkBitmap>& bitmaps,
- const gfx::Point& location,
- int frame_delay_ms) {
- cursor_widget_ = widget;
- cursor_bitmaps_ = bitmaps;
- cursor_location_ = location;
- cursor_frame_ = 0;
- cursor_frame_delay_ms_ = frame_delay_ms;
- cursor_timer_.Stop();
-
- if (cursor_frame_delay_ms_)
- cursor_timer_.Start(
- FROM_HERE,
- base::TimeDelta::FromMilliseconds(cursor_frame_delay_ms_),
- this,
- &DriSurfaceFactory::OnCursorAnimationTimeout);
-
- if (state_ != INITIALIZED)
- return;
-
- ResetCursor();
-}
-
-void DriSurfaceFactory::MoveHardwareCursor(gfx::AcceleratedWidget widget,
- const gfx::Point& location) {
- cursor_location_ = location;
-
- if (state_ != INITIALIZED)
- return;
-
- HardwareDisplayController* controller =
- window_manager_->GetWindowDelegate(widget)->GetController();
- if (controller)
- controller->MoveCursor(location);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// DriSurfaceFactory private
-
-void DriSurfaceFactory::ResetCursor() {
- if (!cursor_widget_)
- return;
-
- HardwareDisplayController* controller =
- window_manager_->GetWindowDelegate(cursor_widget_)->GetController();
- if (cursor_bitmaps_.size()) {
- // Draw new cursor into backbuffer.
- UpdateCursorImage(cursor_buffers_[cursor_frontbuffer_ ^ 1].get(),
- cursor_bitmaps_[cursor_frame_]);
-
- // Reset location & buffer.
- if (controller) {
- controller->MoveCursor(cursor_location_);
- controller->SetCursor(cursor_buffers_[cursor_frontbuffer_ ^ 1]);
- cursor_frontbuffer_ ^= 1;
- }
- } else {
- // No cursor set.
- if (controller)
- controller->UnsetCursor();
- }
-}
-
-void DriSurfaceFactory::OnCursorAnimationTimeout() {
- cursor_frame_++;
- cursor_frame_ %= cursor_bitmaps_.size();
-
- ResetCursor();
-}
-
-} // namespace ui
« no previous file with comments | « ui/ozone/platform/dri/dri_surface_factory.h ('k') | ui/ozone/platform/dri/dri_surface_factory_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698