Provide runtime switch for GL acceleration
* new checkbox in debug fragment * saved value in prefs so it's sticky * each Activity calls a helper to enable/disable per that flag Change-Id: I1af1ae9f401bc746cc97da00dfb0e06407b79d46
This commit is contained in:
parent
da0d12ca36
commit
cd09545b87
|
@ -59,8 +59,9 @@
|
|||
<application android:icon="@drawable/icon" android:label="@string/app_name"
|
||||
android:name="Email"
|
||||
android:theme="@android:style/Theme.Light.Holo"
|
||||
android:hardwareAccelerated="true"
|
||||
android:hardwareAccelerated="false"
|
||||
>
|
||||
<!-- STOPSHIP android:hardwareAccelerated should be "true" -->
|
||||
<activity
|
||||
android:name=".activity.Welcome"
|
||||
>
|
||||
|
|
|
@ -51,4 +51,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:text="@string/debug_clear_webview_cache"
|
||||
/>
|
||||
<CheckBox
|
||||
android:id="@+id/debug_disable_graphics_acceleration"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/debug_disable_graphics_acceleration_label"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
|
|
@ -231,15 +231,23 @@
|
|||
<!-- Version number, shown only on debug screen -->
|
||||
<string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string>
|
||||
<!-- Do Not Translate. Checkbox label, shown only on debug screen -->
|
||||
<string name="debug_enable_debug_logging_label" translatable="false">Enable extra debug logging?</string>
|
||||
<string name="debug_enable_debug_logging_label" translatable="false">
|
||||
Enable extra debug logging?</string>
|
||||
<!-- Do Not Translate. Checkbox label, shown only on debug screen -->
|
||||
<string name="debug_enable_sensitive_logging_label" translatable="false">Enable sensitive information debug logging? (May show passwords in logs.)</string>
|
||||
<string name="debug_enable_sensitive_logging_label" translatable="false">
|
||||
Enable sensitive information debug logging? (May show passwords in logs.)</string>
|
||||
<!-- Do Not Translate. Checkbox label, shown only on debug screen -->
|
||||
<string name="debug_enable_exchange_logging_label" translatable="false">Enable exchange parser logging? (Extremely verbose)</string>
|
||||
<string name="debug_enable_exchange_logging_label" translatable="false">
|
||||
Enable exchange parser logging? (Extremely verbose)</string>
|
||||
<!-- Do Not Translate. Checkbox label, shown only on debug screen -->
|
||||
<string name="debug_enable_exchange_file_logging_label" translatable="false">Enable exchange sd card logging?</string>
|
||||
<string name="debug_enable_exchange_file_logging_label" translatable="false">
|
||||
Enable exchange sd card logging?</string>
|
||||
<!-- Do Not Translate. Button label, shown only on debug screen -->
|
||||
<string name="debug_clear_webview_cache" translatable="false">Clear WebView cache</string>
|
||||
<string name="debug_clear_webview_cache" translatable="false">
|
||||
Clear WebView cache</string>
|
||||
<!-- Do Not Translate. Checkbox label, shown on debug screen. -->
|
||||
<string name="debug_disable_graphics_acceleration_label" translatable="false">
|
||||
Disable hardware graphics acceleration</string>
|
||||
|
||||
<!-- The text in the small separator between smart folders and the accounts -->
|
||||
<string name="account_folder_list_separator_accounts">Accounts</string>
|
||||
|
|
|
@ -74,6 +74,11 @@ public class Email extends Application {
|
|||
*/
|
||||
public static final boolean DEBUG_THREAD_CHECK = false; // DON'T SUBMIT WITH TRUE
|
||||
|
||||
/**
|
||||
* If true, inhibit hardware graphics acceleration in UI (for a/b testing)
|
||||
*/
|
||||
public static boolean sDebugInhibitGraphicsAcceleration = false;
|
||||
|
||||
/**
|
||||
* The MIME type(s) of attachments we're willing to send via attachments.
|
||||
*
|
||||
|
@ -290,6 +295,7 @@ public class Email extends Application {
|
|||
sUiThread = Thread.currentThread();
|
||||
Preferences prefs = Preferences.getPreferences(this);
|
||||
DEBUG = prefs.getEnableDebugLogging();
|
||||
sDebugInhibitGraphicsAcceleration = prefs.getInhibitGraphicsAcceleration();
|
||||
setTempDirectory(this);
|
||||
|
||||
// Tie MailRefreshManager to the Controller.
|
||||
|
|
|
@ -34,6 +34,7 @@ public class Preferences {
|
|||
private static final String ENABLE_DEBUG_LOGGING = "enableDebugLogging";
|
||||
private static final String ENABLE_EXCHANGE_LOGGING = "enableExchangeLogging";
|
||||
private static final String ENABLE_EXCHANGE_FILE_LOGGING = "enableExchangeFileLogging";
|
||||
private static final String INHIBIT_GRAPHICS_ACCELERATION = "inhibitGraphicsAcceleration";
|
||||
private static final String DEVICE_UID = "deviceUID";
|
||||
private static final String ONE_TIME_INITIALIZATION_PROGRESS = "oneTimeInitializationProgress";
|
||||
private static final String AUTO_ADVANCE_DIRECTION = "autoAdvance";
|
||||
|
@ -163,6 +164,14 @@ public class Preferences {
|
|||
return mSharedPreferences.getBoolean(ENABLE_EXCHANGE_FILE_LOGGING, false);
|
||||
}
|
||||
|
||||
public void setInhibitGraphicsAcceleration(boolean value) {
|
||||
mSharedPreferences.edit().putBoolean(INHIBIT_GRAPHICS_ACCELERATION, value).apply();
|
||||
}
|
||||
|
||||
public boolean getInhibitGraphicsAcceleration() {
|
||||
return mSharedPreferences.getBoolean(INHIBIT_GRAPHICS_ACCELERATION, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a new "device UID". This is local to Email app only, to prevent possibility
|
||||
* of correlation with any other user activities in any other apps.
|
||||
|
|
|
@ -68,6 +68,7 @@ public class AccountFolderList extends Activity implements AccountFolderListFrag
|
|||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
|
||||
// STOPSHIP make progress work properly - temporarily missing from ActionBar
|
||||
// requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); // this disables ActionBar
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
package com.android.email.activity;
|
||||
|
||||
import com.android.email.Controller;
|
||||
import com.android.email.Email;
|
||||
import com.android.email.R;
|
||||
import com.android.email.Utility;
|
||||
import com.android.email.provider.EmailContent.Mailbox;
|
||||
|
@ -26,6 +27,7 @@ import android.content.ActivityNotFoundException;
|
|||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.provider.Browser;
|
||||
import android.view.WindowManager;
|
||||
|
||||
/**
|
||||
* Various methods that are used by both 1-pane and 2-pane activities.
|
||||
|
@ -118,4 +120,22 @@ public final class ActivityHelper {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* If configured via debug flags, inhibit hardware graphics acceleration. Must be called
|
||||
* early in onCreate().
|
||||
*
|
||||
* NOTE: Currently, this only works if HW accel is *not* enabled via the manifest.
|
||||
*/
|
||||
public static void debugSetWindowFlags(Activity activity) {
|
||||
if (Email.sDebugInhibitGraphicsAcceleration) {
|
||||
// Clear the flag in the activity's window
|
||||
activity.getWindow().setFlags(0,
|
||||
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
|
||||
} else {
|
||||
// Set the flag in the activity's window
|
||||
activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
|
||||
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,6 +75,7 @@ public class MailboxList extends Activity implements MailboxListFragment.Callbac
|
|||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
|
||||
mAccountId = getIntent().getLongExtra(EXTRA_ACCOUNT_ID, -1);
|
||||
if (mAccountId == -1) {
|
||||
|
|
|
@ -275,6 +275,7 @@ public class MessageCompose extends Activity implements OnClickListener, OnFocus
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
setContentView(R.layout.message_compose);
|
||||
|
||||
mController = Controller.getInstance(getApplication());
|
||||
|
|
|
@ -19,7 +19,6 @@ package com.android.email.activity;
|
|||
import com.android.email.Controller;
|
||||
import com.android.email.ControllerResultUiThreadWrapper;
|
||||
import com.android.email.Email;
|
||||
import com.android.email.NotificationController;
|
||||
import com.android.email.R;
|
||||
import com.android.email.Utility;
|
||||
import com.android.email.activity.setup.AccountSecurity;
|
||||
|
@ -168,6 +167,7 @@ public class MessageList extends Activity implements OnClickListener,
|
|||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
setContentView(R.layout.message_list);
|
||||
|
||||
mControllerCallback = new ControllerResultUiThreadWrapper<ControllerResults>(
|
||||
|
|
|
@ -109,6 +109,7 @@ public class MessageListXL extends Activity implements
|
|||
protected void onCreate(Bundle savedInstanceState) {
|
||||
if (Email.DEBUG_LIFECYCLE && Email.DEBUG) Log.d(Email.LOG_TAG, "MessageListXL onCreate");
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
setContentView(R.layout.message_list_xl);
|
||||
mFragmentManager.onActivityViewReady();
|
||||
|
||||
|
|
|
@ -58,6 +58,7 @@ public abstract class MessageViewBase extends Activity implements MessageViewFra
|
|||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
setContentView(getLayoutId());
|
||||
|
||||
// TODO Turn it into a "managed" dialog?
|
||||
|
|
|
@ -107,6 +107,7 @@ public class UpgradeAccounts extends ListActivity implements OnClickListener {
|
|||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
|
||||
Preferences p = Preferences.getPreferences(this);
|
||||
Account[] legacyAccounts = p.getAccounts();
|
||||
|
|
|
@ -154,6 +154,7 @@ public class Welcome extends Activity {
|
|||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
|
||||
// Reset the "accounts changed" notification, now that we're here
|
||||
Email.setNotifyUiAccountsChanged(false);
|
||||
|
|
|
@ -18,6 +18,7 @@ package com.android.email.activity.setup;
|
|||
|
||||
import com.android.email.R;
|
||||
import com.android.email.SecurityPolicy;
|
||||
import com.android.email.activity.ActivityHelper;
|
||||
import com.android.email.provider.EmailContent.Account;
|
||||
import com.android.email.provider.EmailContent.HostAuth;
|
||||
|
||||
|
@ -60,6 +61,7 @@ public class AccountSecurity extends Activity {
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
|
||||
Intent i = getIntent();
|
||||
long accountId = i.getLongExtra(EXTRA_ACCOUNT_ID, -1);
|
||||
|
|
|
@ -21,6 +21,7 @@ import com.android.email.Email;
|
|||
import com.android.email.NotificationController;
|
||||
import com.android.email.R;
|
||||
import com.android.email.Utility;
|
||||
import com.android.email.activity.ActivityHelper;
|
||||
import com.android.email.mail.Sender;
|
||||
import com.android.email.mail.Store;
|
||||
import com.android.email.provider.EmailContent;
|
||||
|
@ -144,6 +145,7 @@ public class AccountSettingsXL extends PreferenceActivity implements OnClickList
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
|
||||
Intent i = getIntent();
|
||||
if (savedInstanceState == null) {
|
||||
|
|
|
@ -18,6 +18,7 @@ package com.android.email.activity.setup;
|
|||
|
||||
import com.android.email.R;
|
||||
import com.android.email.VendorPolicyLoader;
|
||||
import com.android.email.activity.ActivityHelper;
|
||||
import com.android.email.mail.Store;
|
||||
import com.android.email.provider.EmailContent;
|
||||
import com.android.email.provider.EmailContent.Account;
|
||||
|
@ -47,6 +48,7 @@ public class AccountSetupAccountType extends AccountSetupActivity implements OnC
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
int flowMode = SetupData.getFlowMode();
|
||||
|
||||
// If we're in account setup flow mode, for EAS, skip this screen and "click" EAS
|
||||
|
|
|
@ -19,6 +19,7 @@ package com.android.email.activity.setup;
|
|||
import com.android.email.R;
|
||||
import com.android.email.Utility;
|
||||
import com.android.email.VendorPolicyLoader;
|
||||
import com.android.email.activity.ActivityHelper;
|
||||
import com.android.email.activity.Welcome;
|
||||
import com.android.email.provider.EmailContent.Account;
|
||||
import com.android.email.provider.EmailContent.HostAuth;
|
||||
|
@ -105,6 +106,7 @@ public class AccountSetupBasics extends AccountSetupActivity
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
|
||||
int flowMode = SetupData.getFlowMode();
|
||||
if (flowMode == SetupData.FLOW_MODE_RETURN_TO_CALLER) {
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
package com.android.email.activity.setup;
|
||||
|
||||
import com.android.email.R;
|
||||
import com.android.email.activity.ActivityHelper;
|
||||
import com.android.email.provider.EmailContent.Account;
|
||||
import com.android.email.provider.EmailContent.HostAuth;
|
||||
|
||||
|
@ -79,6 +80,7 @@ public class AccountSetupExchange extends AccountSetupActivity
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
setContentView(R.layout.account_setup_exchange);
|
||||
|
||||
mFragment = (AccountSetupExchangeFragment)
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
package com.android.email.activity.setup;
|
||||
|
||||
import com.android.email.R;
|
||||
import com.android.email.activity.ActivityHelper;
|
||||
import com.android.email.provider.EmailContent.Account;
|
||||
|
||||
import android.app.Activity;
|
||||
|
@ -45,6 +46,7 @@ public class AccountSetupIncoming extends AccountSetupActivity
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
setContentView(R.layout.account_setup_incoming);
|
||||
|
||||
mFragment = (AccountSetupIncomingFragment)
|
||||
|
|
|
@ -19,6 +19,7 @@ package com.android.email.activity.setup;
|
|||
import com.android.email.AccountBackupRestore;
|
||||
import com.android.email.R;
|
||||
import com.android.email.Utility;
|
||||
import com.android.email.activity.ActivityHelper;
|
||||
import com.android.email.activity.Welcome;
|
||||
import com.android.email.provider.EmailContent.Account;
|
||||
import com.android.email.provider.EmailContent.AccountColumns;
|
||||
|
@ -55,6 +56,7 @@ public class AccountSetupNames extends AccountSetupActivity {
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
setContentView(R.layout.account_setup_names);
|
||||
mDescription = (EditText)findViewById(R.id.account_description);
|
||||
mName = (EditText)findViewById(R.id.account_name);
|
||||
|
|
|
@ -20,6 +20,7 @@ import com.android.email.Email;
|
|||
import com.android.email.ExchangeUtils;
|
||||
import com.android.email.R;
|
||||
import com.android.email.SecurityPolicy.PolicySet;
|
||||
import com.android.email.activity.ActivityHelper;
|
||||
import com.android.email.mail.Store;
|
||||
import com.android.email.provider.EmailContent;
|
||||
import com.android.email.provider.EmailContent.Account;
|
||||
|
@ -69,6 +70,7 @@ public class AccountSetupOptions extends AccountSetupActivity {
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
setContentView(R.layout.account_setup_options);
|
||||
|
||||
mCheckFrequencyView = (Spinner)findViewById(R.id.account_check_frequency);
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
package com.android.email.activity.setup;
|
||||
|
||||
import com.android.email.R;
|
||||
import com.android.email.activity.ActivityHelper;
|
||||
import com.android.email.provider.EmailContent.Account;
|
||||
|
||||
import android.app.Activity;
|
||||
|
@ -45,6 +46,7 @@ public class AccountSetupOutgoing extends Activity
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ActivityHelper.debugSetWindowFlags(this);
|
||||
setContentView(R.layout.account_setup_outgoing);
|
||||
|
||||
mFragment = (AccountSetupOutgoingFragment)
|
||||
|
|
|
@ -41,6 +41,7 @@ public class DebugFragment extends Fragment implements OnCheckedChangeListener,
|
|||
private CheckBox mEnableDebugLoggingView;
|
||||
private CheckBox mEnableExchangeLoggingView;
|
||||
private CheckBox mEnableExchangeFileLoggingView;
|
||||
private CheckBox mInhibitGraphicsAccelerationView;
|
||||
|
||||
private Preferences mPreferences;
|
||||
|
||||
|
@ -78,6 +79,11 @@ public class DebugFragment extends Fragment implements OnCheckedChangeListener,
|
|||
|
||||
view.findViewById(R.id.clear_webview_cache).setOnClickListener(this);
|
||||
|
||||
mInhibitGraphicsAccelerationView = (CheckBox)
|
||||
view.findViewById(R.id.debug_disable_graphics_acceleration);
|
||||
mInhibitGraphicsAccelerationView.setChecked(Email.sDebugInhibitGraphicsAcceleration);
|
||||
mInhibitGraphicsAccelerationView.setOnCheckedChangeListener(this);
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -99,6 +105,10 @@ public class DebugFragment extends Fragment implements OnCheckedChangeListener,
|
|||
}
|
||||
break;
|
||||
//EXCHANGE-REMOVE-SECTION-END
|
||||
case R.id.debug_disable_graphics_acceleration:
|
||||
Email.sDebugInhibitGraphicsAcceleration = isChecked;
|
||||
mPreferences.setInhibitGraphicsAcceleration(isChecked);
|
||||
break;
|
||||
}
|
||||
|
||||
Email.updateLoggingFlags(getActivity());
|
||||
|
|
Loading…
Reference in New Issue