12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /*
- * Copyright 2016 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "tools/sk_app/WindowContext.h"
- #include "tools/sk_app/android/WindowContextFactory_android.h"
- #include "tools/sk_app/android/Window_android.h"
- namespace sk_app {
- Window* Window::CreateNativeWindow(void* platformData) {
- Window_android* window = new Window_android();
- if (!window->init((SkiaAndroidApp*)platformData)) {
- delete window;
- return nullptr;
- }
- return window;
- }
- bool Window_android::init(SkiaAndroidApp* skiaAndroidApp) {
- SkASSERT(skiaAndroidApp);
- fSkiaAndroidApp = skiaAndroidApp;
- fSkiaAndroidApp->fWindow = this;
- return true;
- }
- void Window_android::setTitle(const char* title) {
- fSkiaAndroidApp->setTitle(title);
- }
- void Window_android::setUIState(const char* state) {
- fSkiaAndroidApp->setUIState(state);
- }
- bool Window_android::attach(BackendType attachType) {
- fBackendType = attachType;
- // We delay the creation of fWindowContext until Android informs us that
- // the native window is ready to use.
- // The creation will be done in initDisplay, which is initiated by kSurfaceCreated event.
- return true;
- }
- void Window_android::initDisplay(ANativeWindow* window) {
- SkASSERT(window);
- switch (fBackendType) {
- case kNativeGL_BackendType:
- default:
- fWindowContext = window_context_factory::NewGLForAndroid(window,
- fRequestedDisplayParams);
- break;
- case kRaster_BackendType:
- fWindowContext = window_context_factory::NewRasterForAndroid(window,
- fRequestedDisplayParams);
- break;
- #ifdef SK_VULKAN
- case kVulkan_BackendType:
- fWindowContext = window_context_factory::NewVulkanForAndroid(window,
- fRequestedDisplayParams);
- break;
- #endif
- }
- this->onBackendCreated();
- }
- void Window_android::onDisplayDestroyed() {
- detach();
- }
- void Window_android::onInval() {
- fSkiaAndroidApp->postMessage(Message(kContentInvalidated));
- }
- void Window_android::paintIfNeeded() {
- if (fWindowContext) { // Check if initDisplay has already been called
- onPaint();
- } else {
- markInvalProcessed();
- }
- }
- } // namespace sk_app
|