diff options
author | liyuqian <liyuqian@google.com> | 2016-06-02 12:16:25 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-02 12:16:25 -0700 |
commit | 6cb70251829a467b146da9bc8925064f33608e48 (patch) | |
tree | bbd9e5d31aceebaf0a96684e68a421ef56cf7269 /tools/viewer/Viewer.cpp | |
parent | 0dd9f2cbc445c477a840743420a6b2867ebbe120 (diff) |
Implement OpenGL backend in Android viewer app
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2032623002
Review-Url: https://codereview.chromium.org/2032623002
Diffstat (limited to 'tools/viewer/Viewer.cpp')
-rw-r--r-- | tools/viewer/Viewer.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp index 5228a0fd12..c73b1ba9ce 100644 --- a/tools/viewer/Viewer.cpp +++ b/tools/viewer/Viewer.cpp @@ -424,9 +424,11 @@ void Viewer::updateUIState() { // We will be able to change the backend too. Json::Value backendState(Json::objectValue); backendState[kName] = kBackendStateName; - backendState[kValue] = fBackendType == sk_app::Window::kVulkan_BackendType ? - "Vulkan" : "Other than Vulkan"; + backendState[kValue] = kBackendTypeStrings[fBackendType]; backendState[kOptions] = Json::Value(Json::arrayValue); + for(auto str : kBackendTypeStrings) { + backendState[kOptions].append(Json::Value(str)); + } Json::Value state(Json::arrayValue); state.append(slideState); @@ -436,7 +438,10 @@ void Viewer::updateUIState() { } void Viewer::onUIStateChanged(const SkString& stateName, const SkString& stateValue) { - // Currently, we only recognize the Slide state + // For those who will add more features to handle the state change in this function: + // After the change, please call updateUIState no notify the frontend (e.g., Android app). + // For example, after slide change, updateUIState is called inside setupCurrentSlide; + // after backend change, updateUIState is called in this function. if (stateName.equals(kSlideStateName)) { int previousSlide = fCurrentSlide; fCurrentSlide = 0; @@ -451,6 +456,20 @@ void Viewer::onUIStateChanged(const SkString& stateName, const SkString& stateVa fCurrentSlide = previousSlide; SkDebugf("Slide not found: %s", stateValue.c_str()); } + } else if (stateName.equals(kBackendStateName)) { + for (int i = 0; i < sk_app::Window::kBackendTypeCount; i++) { + if (stateValue.equals(kBackendTypeStrings[i])) { + if (fBackendType != i) { + fBackendType = (sk_app::Window::BackendType)i; + fWindow->detach(); + fWindow->attach(fBackendType, DisplayParams()); + fWindow->inval(); + updateTitle(); + updateUIState(); + } + break; + } + } } else { SkDebugf("Unknown stateName: %s", stateName.c_str()); } |