diff options
-rw-r--r-- | ui/aura/root_window_host_linux.cc | 77 |
1 files changed, 7 insertions, 70 deletions
diff --git a/ui/aura/root_window_host_linux.cc b/ui/aura/root_window_host_linux.cc index 9f3359f..5361409 100644 --- a/ui/aura/root_window_host_linux.cc +++ b/ui/aura/root_window_host_linux.cc @@ -16,7 +16,6 @@ #include "base/message_pump_aurax11.h" #include "base/stl_util.h" #include "base/stringprintf.h" -#include "grit/ui_resources.h" #include "grit/ui_resources_standard.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/aura/client/user_action_client.h" @@ -46,8 +45,6 @@ namespace { const int kBackMouseButton = 8; const int kForwardMouseButton = 9; -const int kAnimatedCursorFrameDelayMs = 25; - const char kRootWindowHostLinuxKey[] = "__AURA_ROOT_WINDOW_HOST_LINUX__"; const char* kAtomsToCache[] = { @@ -357,8 +354,8 @@ class RootWindowHostLinux::ImageCursors { IDR_AURA_CURSOR_NORTH_EAST_SOUTH_WEST_RESIZE, 12, 11); LoadImageCursor(ui::kCursorNorthWestSouthEastResize, IDR_AURA_CURSOR_NORTH_WEST_SOUTH_EAST_RESIZE, 11, 11); - LoadAnimatedCursor(ui::kCursorWait, IDR_THROBBER, 7, 7); - LoadAnimatedCursor(ui::kCursorProgress, IDR_THROBBER, 7, 7); + + // TODO (varunjain): add more cursors once we have assets. } ~ImageCursors() { @@ -366,32 +363,20 @@ class RootWindowHostLinux::ImageCursors { } void UnloadAll() { - for (std::map<int, Cursor>::const_iterator it = cursors_.begin(); - it != cursors_.end(); ++it) + std::map<int, Cursor>::const_iterator it; + for (it = cursors_.begin(); it != cursors_.end(); ++it) ui::UnrefCustomXCursor(it->second); - - // Free animated cursors and images. - for (AnimatedCursorMap::iterator it = animated_cursors_.begin(); - it != animated_cursors_.end(); ++it) { - XcursorImagesDestroy(it->second.second); // also frees individual frames. - XFreeCursor(ui::GetXDisplay(), it->second.first); - } } // Returns true if we have an image resource loaded for the |native_cursor|. bool IsImageCursor(gfx::NativeCursor native_cursor) { - int type = native_cursor.native_type(); - return cursors_.find(type) != cursors_.end() || - animated_cursors_.find(type) != animated_cursors_.end(); + return cursors_.find(native_cursor.native_type()) != cursors_.end(); } // Gets the X Cursor corresponding to the |native_cursor|. ::Cursor ImageCursorFromNative(gfx::NativeCursor native_cursor) { - int type = native_cursor.native_type(); - if (animated_cursors_.find(type) != animated_cursors_.end()) - return animated_cursors_[type].first; - DCHECK(cursors_.find(type) != cursors_.end()); - return cursors_[type]; + DCHECK(cursors_.find(native_cursor.native_type()) != cursors_.end()); + return cursors_[native_cursor.native_type()]; } private: @@ -415,57 +400,9 @@ class RootWindowHostLinux::ImageCursors { // |bitmap| is owned by the resource bundle. So we do not need to free it. } - // Creates an animated X Cursor from an image resource and puts it in the - // cursor map. The image is assumed to be a concatenation of animation frames. - // Also, each frame is assumed to be square (width == height) - void LoadAnimatedCursor(int id, int resource_id, int hot_x, int hot_y) { - const gfx::ImageSkia* image = - ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(resource_id); - float actual_scale = 0; - const SkBitmap& bitmap = image->GetBitmapForScale(scale_factor_, - scale_factor_, - &actual_scale); - DCHECK_EQ(bitmap.config(), SkBitmap::kARGB_8888_Config); - int frame_width = bitmap.height(); - int frame_height = frame_width; - int total_width = bitmap.width(); - DCHECK_EQ(total_width % frame_width, 0); - int frame_count = total_width / frame_width; - DCHECK_GT(frame_count, 0); - XcursorImages* x_images = XcursorImagesCreate(frame_count); - x_images->nimage = frame_count; - bitmap.lockPixels(); - unsigned int* pixels = bitmap.getAddr32(0, 0); - // Create each frame. - for (int i = 0; i < frame_count; ++i) { - XcursorImage* x_image = XcursorImageCreate(frame_width, frame_height); - for (int j = 0; j < frame_height; ++j) { - // Copy j'th row of i'th frame. - memcpy(x_image->pixels + j * frame_width, - pixels + i * frame_width + j * total_width, - frame_width * 4); - } - x_image->xhot = hot_x * actual_scale; - x_image->yhot = hot_y * actual_scale; - x_image->delay = kAnimatedCursorFrameDelayMs; - x_images->images[i] = x_image; - } - bitmap.unlockPixels(); - - animated_cursors_[id] = std::make_pair( - XcursorImagesLoadCursor(ui::GetXDisplay(), x_images), x_images); - // |bitmap| is owned by the resource bundle. So we do not need to free it. - } - // A map to hold all image cursors. It maps the cursor ID to the X Cursor. std::map<int, Cursor> cursors_; - // A map to hold all animated cursors. It maps the cursor ID to the pair of - // the X Cursor and the corresponding XcursorImages. We need a pointer to the - // images so that we can free them on destruction. - typedef std::map<int, std::pair<Cursor, XcursorImages*> > AnimatedCursorMap; - AnimatedCursorMap animated_cursors_; - float scale_factor_; DISALLOW_COPY_AND_ASSIGN(ImageCursors); |