summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--o3d/core/cross/cairo/renderer_cairo.cc37
-rw-r--r--o3d/core/cross/cairo/renderer_cairo.h3
2 files changed, 33 insertions, 7 deletions
diff --git a/o3d/core/cross/cairo/renderer_cairo.cc b/o3d/core/cross/cairo/renderer_cairo.cc
index ba88cd4..d66634c 100644
--- a/o3d/core/cross/cairo/renderer_cairo.cc
+++ b/o3d/core/cross/cairo/renderer_cairo.cc
@@ -68,7 +68,8 @@ RendererCairo::RendererCairo(ServiceLocator* service_locator)
#elif defined(OS_WIN)
hwnd_(NULL),
#endif
- main_surface_(NULL) {
+ main_surface_(NULL),
+ fullscreen_(false) {
// Don't need to do anything.
}
@@ -449,8 +450,21 @@ void RendererCairo::SetViewportInPixels(int left,
// Returns true on success, false on failure.
bool RendererCairo::GoFullscreen(const DisplayWindow& display,
int mode_id) {
- NOTIMPLEMENTED();
- return false;
+ if (!fullscreen_) {
+ DLOG(INFO) << "RendererCairo entering fullscreen";
+#if defined(OS_WIN)
+ DEVMODE dev_mode;
+ if (hwnd_ != NULL &&
+ EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dev_mode)) {
+ int width = dev_mode.dmPelsWidth;
+ int height = dev_mode.dmPelsHeight;
+
+ fullscreen_ = true;
+ Resize(width, height);
+ }
+#endif
+ }
+ return fullscreen_;
}
// TODO(fransiskusx): Need to implement it later.
@@ -463,15 +477,24 @@ bool RendererCairo::GoFullscreen(const DisplayWindow& display,
// Returns true on success, false on failure.
bool RendererCairo::CancelFullscreen(const DisplayWindow& display,
int width, int height) {
- NOTIMPLEMENTED();
- return false;
+#if defined(OS_WIN)
+ if (hwnd_ == NULL) {
+ // Not initialized.
+ return false;
+ }
+#endif
+ if (fullscreen_) {
+ DLOG(INFO) << "RendererCairo exiting fullscreen";
+ fullscreen_ = false;
+ Resize(width, height);
+ }
+ return true;
}
// TODO(fransiskusx): Need to implement it later.
// Tells whether we're currently displayed fullscreen or not.
bool RendererCairo::fullscreen() const {
- NOTIMPLEMENTED();
- return false;
+ return fullscreen_;
}
// TODO(fransiskusx): This function is not applicable to 2D rendering.
diff --git a/o3d/core/cross/cairo/renderer_cairo.h b/o3d/core/cross/cairo/renderer_cairo.h
index 46b7c68..003c88b 100644
--- a/o3d/core/cross/cairo/renderer_cairo.h
+++ b/o3d/core/cross/cairo/renderer_cairo.h
@@ -247,6 +247,9 @@ class RendererCairo : public Renderer {
// Array of Layer
LayerList layer_list_;
+
+ // Fullscreen mode.
+ bool fullscreen_;
};
} // namespace o2d