Index: tools/vulkan/android/Window_android.cpp |
diff --git a/tools/vulkan/android/Window_android.cpp b/tools/vulkan/android/Window_android.cpp |
deleted file mode 100644 |
index 87a4d22a3f6f2b3b97b6f91220ecbacba9a72f46..0000000000000000000000000000000000000000 |
--- a/tools/vulkan/android/Window_android.cpp |
+++ /dev/null |
@@ -1,179 +0,0 @@ |
-/* |
-* 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 "Window_android.h" |
- |
-#include "VulkanTestContext_android.h" |
- |
-Window* Window::CreateNativeWindow(void* platformData) { |
- Window_android* window = new Window_android(); |
- if (!window->init((android_app*)platformData)) { |
- delete window; |
- return nullptr; |
- } |
- return window; |
-} |
- |
-static void handle_cmd(struct android_app* app, int32_t cmd); |
-static int32_t handle_input(struct android_app* app, AInputEvent* event); |
- |
-bool Window_android::init(android_app* app) { |
- SkASSERT(app); |
- mApp = app; |
- mApp->userData = this; |
- mApp->onAppCmd = handle_cmd; |
- mApp->onInputEvent = handle_input; |
- return true; |
-} |
- |
-void Window_android::setTitle(const char* title) { |
- //todo |
- SkDebugf("Title: %s", title); |
-} |
- |
-bool Window_android::attach(BackEndType attachType, int msaaSampleCount) { |
- if (kVulkan_BackendType != attachType) { |
- return false; |
- } |
- |
- mSampleCount = msaaSampleCount; |
- |
- // We delay the creation of fTestContext until Android informs us that |
- // the native window is ready to use. |
- return true; |
-} |
- |
-void Window_android::initDisplay(ANativeWindow* window) { |
- SkASSERT(window); |
- ContextPlatformData_android platformData; |
- platformData.fNativeWindow = window; |
- fTestContext = VulkanTestContext::Create((void*)&platformData, mSampleCount); |
-} |
- |
-static void android_app_write_cmd(struct android_app* android_app, int8_t cmd) { |
- if (write(android_app->msgwrite, &cmd, sizeof(cmd)) != sizeof(cmd)) { |
- SkDebugf("Failure writing android_app cmd: %s\n", strerror(errno)); |
- } |
-} |
- |
-void Window_android::inval() { |
- android_app_write_cmd(mApp, APP_CMD_INVAL_WINDOW); |
-} |
- |
-void Window_android::paintIfNeeded() { |
- if (mApp->window || !mContentRect.isEmpty()) { |
- this->onPaint(); |
- } |
-} |
- |
-/** |
- * Process the next main command. |
- */ |
-static void handle_cmd(struct android_app* app, int32_t cmd) { |
- Window_android* window = (Window_android*)app->userData; |
- switch (cmd) { |
- case APP_CMD_INIT_WINDOW: |
- // The window is being shown, get it ready. |
- SkASSERT(app->window); |
- window->initDisplay(app->window); |
- window->paintIfNeeded(); |
- break; |
- case APP_CMD_WINDOW_RESIZED: { |
- int width = ANativeWindow_getWidth(app->window); |
- int height = ANativeWindow_getHeight(app->window); |
- window->onResize(width, height); |
- break; |
- } |
- case APP_CMD_CONTENT_RECT_CHANGED: |
- window->setContentRect(app->contentRect.left, app->contentRect.top, |
- app->contentRect.right, app->contentRect.bottom); |
- window->paintIfNeeded(); |
- break; |
- case APP_CMD_TERM_WINDOW: |
- // The window is being hidden or closed, clean it up. |
- window->detach(); |
- break; |
- case APP_CMD_INVAL_WINDOW: |
- window->paintIfNeeded(); |
- break; |
- } |
-} |
- |
-static Window::Key get_key(int32_t keycode) { |
- static const struct { |
- int32_t fAndroidKey; |
- Window::Key fWindowKey; |
- } gPair[] = { |
- { AKEYCODE_BACK, Window::kBack_Key }, |
- { AKEYCODE_VOLUME_UP, Window::kLeft_Key }, |
- { AKEYCODE_VOLUME_DOWN, Window::kRight_Key } |
- }; |
- for (size_t i = 0; i < SK_ARRAY_COUNT(gPair); i++) { |
- if (gPair[i].fAndroidKey == keycode) { |
- return gPair[i].fWindowKey; |
- } |
- } |
- return Window::kNONE_Key; |
-} |
- |
-static Window::InputState get_action(int32_t action) { |
- static const struct { |
- int32_t fAndroidAction; |
- Window::InputState fInputState; |
- } gPair[] = { |
- { AKEY_STATE_DOWN, Window::kDown_InputState }, |
- { AKEY_STATE_UP, Window::kUp_InputState }, |
- }; |
- for (size_t i = 0; i < SK_ARRAY_COUNT(gPair); i++) { |
- if (gPair[i].fAndroidAction == action) { |
- return gPair[i].fInputState; |
- } |
- } |
- return Window::kMove_InputState; |
-} |
- |
-static int32_t get_key_modifiers(AInputEvent* event) { |
- static const struct { |
- int32_t fAndroidState; |
- int32_t fWindowModifier; |
- } gPair[] = { |
- { AMETA_SHIFT_ON, Window::kShift_ModifierKey }, |
- { AMETA_CTRL_ON, Window::kControl_ModifierKey }, |
- }; |
- |
- int32_t metaState = AKeyEvent_getMetaState(event); |
- int32_t modifiers = 0; |
- |
- if (AKeyEvent_getRepeatCount(event) == 0) { |
- modifiers |= Window::kFirstPress_ModifierKey; |
- } |
- |
- for (size_t i = 0; i < SK_ARRAY_COUNT(gPair); i++) { |
- if (gPair[i].fAndroidState == metaState) { |
- modifiers |= gPair[i].fWindowModifier; |
- } |
- } |
- return modifiers; |
-} |
- |
-/** |
- * Process the next input event. |
- */ |
-static int32_t handle_input(struct android_app* app, AInputEvent* event) { |
- Window_android* window = (Window_android*)app->userData; |
- switch(AInputEvent_getType(event)) { |
- case AINPUT_EVENT_TYPE_MOTION: |
- break; |
- case AINPUT_EVENT_TYPE_KEY: |
- Window::Key key = get_key(AKeyEvent_getKeyCode(event)); |
- Window::InputState state = get_action(AKeyEvent_getAction(event)); |
- int32_t mod = get_key_modifiers(event); |
- window->onKey(key, state, mod); |
- return true; // eat all key events |
- } |
- return 0; |
-} |