Index: ui/ozone/platform/caca/caca_connection.cc |
diff --git a/ui/ozone/platform/caca/caca_connection.cc b/ui/ozone/platform/caca/caca_connection.cc |
index 49b51a45c8674f77adcb16250d8742c38f26cdda..2086257a85dbbcda548fc03e066d1c8c0973f1a8 100644 |
--- a/ui/ozone/platform/caca/caca_connection.cc |
+++ b/ui/ozone/platform/caca/caca_connection.cc |
@@ -8,33 +8,50 @@ |
namespace ui { |
-// TODO(dnicoara) As an optimization, |bitmap_size_| should be scaled based on |
-// |physical_size_| and font size. |
-CacaConnection::CacaConnection() |
- : canvas_(NULL), |
- display_(NULL), |
- physical_size_(160, 48), |
- bitmap_size_(800, 600) {} |
+namespace { |
+ |
+// Size of initial cnavas (in characters). |
+const int kDefaultCanvasWidth = 160; |
+const int kDefaultCanvasHeight = 48; |
+ |
+} // namespace |
+ |
+CacaConnection::CacaConnection() { |
+} |
CacaConnection::~CacaConnection() { |
- if (display_) { |
- caca_free_display(display_); |
- caca_free_canvas(canvas_); |
- } |
} |
-void CacaConnection::Initialize() { |
+bool CacaConnection::Initialize() { |
if (display_) |
- return; |
+ return true; |
+ |
+ canvas_.reset(caca_create_canvas(kDefaultCanvasWidth, kDefaultCanvasHeight)); |
+ if (!canvas_) { |
+ PLOG(ERROR) << "failed to create libcaca canvas"; |
+ return false; |
+ } |
+ |
+ display_.reset(caca_create_display(canvas_.get())); |
+ if (!display_) { |
+ PLOG(ERROR) << "failed to initialize libcaca display"; |
+ return false; |
+ } |
- canvas_ = caca_create_canvas(physical_size_.width(), physical_size_.height()); |
- display_ = caca_create_display(canvas_); |
+ caca_set_cursor(display_.get(), 1); |
+ caca_set_display_title(display_.get(), "Ozone Content Shell"); |
+ |
+ UpdateDisplaySize(); |
+ |
+ return true; |
+} |
- physical_size_.SetSize(caca_get_canvas_width(canvas_), |
- caca_get_canvas_height(canvas_)); |
+void CacaConnection::UpdateDisplaySize() { |
+ physical_size_.SetSize(caca_get_canvas_width(canvas_.get()), |
+ caca_get_canvas_height(canvas_.get())); |
- caca_set_cursor(display_, 1); |
- caca_set_display_title(display_, "Ozone Content Shell"); |
+ bitmap_size_.SetSize(caca_get_display_width(display_.get()), |
+ caca_get_display_height(display_.get())); |
} |
} // namespace ui |