Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(616)

Unified Diff: ui/base/touch/touch_device_android.cc

Issue 2301073002: Optimization: avoid making 4 JNI calls to get touch device attributes. (Closed)
Patch Set: Fix windows compile issues Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/touch/touch_device.cc ('k') | ui/base/touch/touch_device_linux.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/touch/touch_device_android.cc
diff --git a/ui/base/touch/touch_device_android.cc b/ui/base/touch/touch_device_android.cc
index 0924783dffa7549c51ff514274e23593e9dc5803..b8a458e8300467d6cd711fc4745f9cb7cf19f578 100644
--- a/ui/base/touch/touch_device_android.cc
+++ b/ui/base/touch/touch_device_android.cc
@@ -5,6 +5,7 @@
#include "ui/base/touch/touch_device.h"
#include "base/android/context_utils.h"
+#include "base/android/jni_array.h"
#include "base/logging.h"
#include "jni/TouchDevice_jni.h"
@@ -22,13 +23,19 @@ int MaxTouchPoints() {
GetApplicationContext());
}
-int GetAvailablePointerTypes() {
- return Java_TouchDevice_availablePointerTypes(AttachCurrentThread(),
- GetApplicationContext());
+std::pair<int, int> GetAvailablePointerAndHoverTypes() {
+ JNIEnv* env = AttachCurrentThread();
+ std::vector<int> pointer_and_hover_types;
+ base::android::JavaIntArrayToIntVector(
+ env, Java_TouchDevice_availablePointerAndHoverTypes(
+ env, GetApplicationContext())
+ .obj(),
+ &pointer_and_hover_types);
+ DCHECK_EQ(pointer_and_hover_types.size(), 2u);
+ return std::make_pair(pointer_and_hover_types[0], pointer_and_hover_types[1]);
}
-PointerType GetPrimaryPointerType() {
- int available_pointer_types = GetAvailablePointerTypes();
+PointerType GetPrimaryPointerType(int available_pointer_types) {
if (available_pointer_types & POINTER_TYPE_COARSE)
return POINTER_TYPE_COARSE;
if (available_pointer_types & POINTER_TYPE_FINE)
@@ -37,13 +44,7 @@ PointerType GetPrimaryPointerType() {
return POINTER_TYPE_NONE;
}
-int GetAvailableHoverTypes() {
- return Java_TouchDevice_availableHoverTypes(AttachCurrentThread(),
- GetApplicationContext());
-}
-
-HoverType GetPrimaryHoverType() {
- int available_hover_types = GetAvailableHoverTypes();
+HoverType GetPrimaryHoverType(int available_hover_types) {
if (available_hover_types & HOVER_TYPE_ON_DEMAND)
return HOVER_TYPE_ON_DEMAND;
if (available_hover_types & HOVER_TYPE_HOVER)
« no previous file with comments | « ui/base/touch/touch_device.cc ('k') | ui/base/touch/touch_device_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698