aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractActivity.java2
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractListActivity.java2
-rw-r--r--main/src/cgeo/geocaching/activity/ActivityMixin.java10
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java2
-rw-r--r--main/src/cgeo/geocaching/settings/Settings.java13
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java9
6 files changed, 33 insertions, 5 deletions
diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java
index fbe9aca..603211e 100644
--- a/main/src/cgeo/geocaching/activity/AbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java
@@ -146,7 +146,7 @@ public abstract class AbstractActivity extends ActionBarActivity implements IAbs
// only needed in some activities, but implemented in super class nonetheless
Cookies.restoreCookieStore(Settings.getCookieStore());
- ActivityMixin.keepScreenOn(this, keepScreenOn);
+ ActivityMixin.onCreate(this, keepScreenOn);
}
@Override
diff --git a/main/src/cgeo/geocaching/activity/AbstractListActivity.java b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
index 718dc70..d7482c3 100644
--- a/main/src/cgeo/geocaching/activity/AbstractListActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
@@ -67,7 +67,7 @@ public abstract class AbstractListActivity extends ActionBarListActivity impleme
res = this.getResources();
app = (CgeoApplication) this.getApplication();
- ActivityMixin.keepScreenOn(this, keepScreenOn);
+ ActivityMixin.onCreate(this, keepScreenOn);
}
final protected void setTitle(final String title) {
diff --git a/main/src/cgeo/geocaching/activity/ActivityMixin.java b/main/src/cgeo/geocaching/activity/ActivityMixin.java
index 6bca871..28042b0 100644
--- a/main/src/cgeo/geocaching/activity/ActivityMixin.java
+++ b/main/src/cgeo/geocaching/activity/ActivityMixin.java
@@ -16,7 +16,9 @@ import android.support.v4.app.TaskStackBuilder;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.Gravity;
+import android.view.Window;
import android.view.WindowManager;
+import android.view.WindowManager.LayoutParams;
import android.widget.EditText;
import android.widget.Toast;
@@ -103,9 +105,13 @@ public final class ActivityMixin {
postShowToast(activity, text, Toast.LENGTH_SHORT);
}
- public static void keepScreenOn(final Activity abstractActivity, final boolean keepScreenOn) {
+ public static void onCreate(final Activity abstractActivity, final boolean keepScreenOn) {
+ final Window window = abstractActivity.getWindow();
if (keepScreenOn) {
- abstractActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ }
+ if (Settings.useHardwareAcceleration()) {
+ window.setFlags(LayoutParams.FLAG_HARDWARE_ACCELERATED, LayoutParams.FLAG_HARDWARE_ACCELERATED);
}
}
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index d64a1d8..0d24cc1 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -429,7 +429,7 @@ public class CGeoMap extends AbstractMap implements ViewFactory {
// reset status
noMapTokenShowed = false;
- ActivityMixin.keepScreenOn(activity, true);
+ ActivityMixin.onCreate(activity, true);
// set layout
diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java
index fdcd94f..edc5f21 100644
--- a/main/src/cgeo/geocaching/settings/Settings.java
+++ b/main/src/cgeo/geocaching/settings/Settings.java
@@ -34,6 +34,7 @@ import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.os.Build;
import android.os.Environment;
import android.preference.PreferenceManager;
@@ -53,6 +54,10 @@ public class Settings {
public static final int SHOW_WP_THRESHOLD_MAX = 50;
private static final int MAP_SOURCE_DEFAULT = GoogleMapProvider.GOOGLE_MAP_ID.hashCode();
+ public static final boolean HW_ACCEL_DISABLED_BY_DEFAULT =
+ StringUtils.equals(Build.MODEL, "HTC One X") || // HTC One X
+ StringUtils.equals(Build.MODEL, "GT-I8190"); // Samsung S3 mini
+
private final static int unitsMetric = 1;
// twitter api keys
@@ -1033,4 +1038,12 @@ public class Settings {
history.add(0, geocode);
putString(R.string.pref_caches_history, StringUtils.join(history, HISTORY_SEPARATOR));
}
+
+ public static boolean useHardwareAcceleration() {
+ return getBoolean(R.string.pref_hardware_acceleration, !HW_ACCEL_DISABLED_BY_DEFAULT);
+ }
+
+ public static boolean setUseHardwareAcceleration(final boolean useHardwareAcceleration) {
+ return putBoolean(R.string.pref_hardware_acceleration, useHardwareAcceleration);
+ }
}
diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java
index 707a530..84cfae8 100644
--- a/main/src/cgeo/geocaching/settings/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java
@@ -1,5 +1,7 @@
package cgeo.geocaching.settings;
+import butterknife.ButterKnife;
+
import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.DataStore;
import cgeo.geocaching.Intents;
@@ -130,6 +132,7 @@ public class SettingsActivity extends PreferenceActivity {
initServicePreferences();
initNavigationMenuPreferences();
initMaintenanceButtons();
+ initHardwareAccelerationPreferences();
for (final int k : new int[] { R.string.pref_username, R.string.pref_password,
R.string.pref_pass_vote, R.string.pref_signature,
@@ -380,6 +383,12 @@ public class SettingsActivity extends PreferenceActivity {
});
}
+ public void initHardwareAccelerationPreferences() {
+ // We have to ensure that the preference is initialized so that devices with hardware acceleration disabled
+ // get the appropriate value.
+ getPreference(R.string.pref_hardware_acceleration).setDefaultValue(!Settings.HW_ACCEL_DISABLED_BY_DEFAULT);
+ }
+
private void initDbLocationPreference() {
final Preference p = getPreference(R.string.pref_dbonsdcard);
p.setPersistent(false);