diff options
71 files changed, 1108 insertions, 428 deletions
diff --git a/core/java/android/view/ScaleGestureDetector.java b/core/java/android/view/ScaleGestureDetector.java index 5521e9292342..d638e7080b32 100644 --- a/core/java/android/view/ScaleGestureDetector.java +++ b/core/java/android/view/ScaleGestureDetector.java @@ -156,6 +156,7 @@ public class ScaleGestureDetector { private float mRightSlopEdge; private float mBottomSlopEdge; private boolean mSloppyGesture; + private boolean mInvalidGesture; // Pointer IDs currently responsible for the two fingers controlling the gesture private int mActiveId0; @@ -177,6 +178,8 @@ public class ScaleGestureDetector { reset(); // Start fresh } + if (mInvalidGesture) return false; + if (!mGestureInProgress) { switch (action) { case MotionEvent.ACTION_DOWN: { @@ -518,6 +521,15 @@ public class ScaleGestureDetector { final int currIndex0 = curr.findPointerIndex(mActiveId0); final int currIndex1 = curr.findPointerIndex(mActiveId1); + if (prevIndex0 < 0 || prevIndex1 < 0 || currIndex0 < 0 || currIndex1 < 0) { + mInvalidGesture = true; + Log.e(TAG, "Invalid MotionEvent stream detected.", new Throwable()); + if (mGestureInProgress) { + mListener.onScaleEnd(this); + } + return; + } + final float px0 = prev.getX(prevIndex0); final float py0 = prev.getY(prevIndex0); final float px1 = prev.getX(prevIndex1); @@ -556,6 +568,7 @@ public class ScaleGestureDetector { mGestureInProgress = false; mActiveId0 = -1; mActiveId1 = -1; + mInvalidGesture = false; } /** diff --git a/core/java/android/webkit/HTML5VideoFullScreen.java b/core/java/android/webkit/HTML5VideoFullScreen.java new file mode 100644 index 000000000000..993d694a585d --- /dev/null +++ b/core/java/android/webkit/HTML5VideoFullScreen.java @@ -0,0 +1,286 @@ + +package android.webkit; + +import android.content.Context; +import android.media.MediaPlayer; +import android.media.Metadata; +import android.util.Log; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.SurfaceHolder; +import android.view.SurfaceView; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.HTML5VideoView; +import android.webkit.HTML5VideoViewProxy; +import android.widget.FrameLayout; +import android.widget.MediaController; +import android.widget.MediaController.MediaPlayerControl; + + +/** + * @hide This is only used by the browser + */ +public class HTML5VideoFullScreen extends HTML5VideoView + implements MediaPlayerControl, MediaPlayer.OnPreparedListener, + View.OnTouchListener { + + private SurfaceView mSurfaceView; + + // We need the full screen state to decide which surface to render to and + // when to create the MediaPlayer accordingly. + static final int FULLSCREEN_OFF = 0; + static final int FULLSCREEN_SURFACECREATING = 1; + static final int FULLSCREEN_SURFACECREATED = 2; + + private int mFullScreenMode; + // The Media Controller only used for full screen mode + private MediaController mMediaController; + + // SurfaceHolder for full screen + private SurfaceHolder mSurfaceHolder = null; + + // Data only for MediaController + private boolean mCanSeekBack; + private boolean mCanSeekForward; + private boolean mCanPause; + private int mCurrentBufferPercentage; + + // The progress view. + private static View mProgressView; + // The container for the progress view and video view + private static FrameLayout mLayout; + + SurfaceHolder.Callback mSHCallback = new SurfaceHolder.Callback() + { + public void surfaceChanged(SurfaceHolder holder, int format, + int w, int h) + { + if (mPlayer != null && mMediaController != null + && mCurrentState == STATE_PREPARED) { + if (mMediaController.isShowing()) { + // ensure the controller will get repositioned later + mMediaController.hide(); + } + mMediaController.show(); + } + } + + public void surfaceCreated(SurfaceHolder holder) + { + mSurfaceHolder = holder; + mFullScreenMode = FULLSCREEN_SURFACECREATED; + + prepareForFullScreen(); + } + + public void surfaceDestroyed(SurfaceHolder holder) + { + // after we return from this we can't use the surface any more + mSurfaceHolder = null; + // The current Video View will be destroy when we play a new video. + } + }; + + public SurfaceView getSurfaceView() { + return mSurfaceView; + } + + HTML5VideoFullScreen(Context context, int videoLayerId, int position, + boolean autoStart) { + mSurfaceView = new SurfaceView(context); + mFullScreenMode = FULLSCREEN_OFF; + init(videoLayerId, position, autoStart); + } + + private void setMediaController(MediaController m) { + mMediaController = m; + attachMediaController(); + } + + private void attachMediaController() { + if (mPlayer != null && mMediaController != null) { + mMediaController.setMediaPlayer(this); + mMediaController.setAnchorView(mSurfaceView); + //Will be enabled when prepared + mMediaController.setEnabled(false); + } + } + + @Override + public void decideDisplayMode() { + mPlayer.setDisplay(mSurfaceHolder); + } + + @Override + public void prepareForFullScreen() { + // So in full screen, we reset the MediaPlayer + mPlayer.reset(); + setMediaController(new MediaController(mProxy.getContext())); + + prepareDataAndDisplayMode(mProxy); + } + + + private void toggleMediaControlsVisiblity() { + if (mMediaController.isShowing()) { + mMediaController.hide(); + } else { + mMediaController.show(); + } + } + + @Override + public void onPrepared(MediaPlayer mp) { + super.onPrepared(mp); + + mSurfaceView.setOnTouchListener(this); + // Get the capabilities of the player for this stream + Metadata data = mp.getMetadata(MediaPlayer.METADATA_ALL, + MediaPlayer.BYPASS_METADATA_FILTER); + if (data != null) { + mCanPause = !data.has(Metadata.PAUSE_AVAILABLE) + || data.getBoolean(Metadata.PAUSE_AVAILABLE); + mCanSeekBack = !data.has(Metadata.SEEK_BACKWARD_AVAILABLE) + || data.getBoolean(Metadata.SEEK_BACKWARD_AVAILABLE); + mCanSeekForward = !data.has(Metadata.SEEK_FORWARD_AVAILABLE) + || data.getBoolean(Metadata.SEEK_FORWARD_AVAILABLE); + } else { + mCanPause = mCanSeekBack = mCanSeekForward = true; + } + + // mMediaController status depends on the Metadata result, so put it + // after reading the MetaData + if (mMediaController != null) { + mMediaController.setEnabled(true); + // If paused , should show the controller for ever! + if (getAutostart()) + mMediaController.show(); + else + mMediaController.show(0); + } + + if (mProgressView != null) { + mProgressView.setVisibility(View.GONE); + mLayout.removeView(mProgressView); + mProgressView = null; + } + } + + + private final WebChromeClient.CustomViewCallback mCallback = + new WebChromeClient.CustomViewCallback() { + public void onCustomViewHidden() { + // It listens to SurfaceHolder.Callback.SurfaceDestroyed event + // which happens when the video view is detached from its parent + // view. This happens in the WebChromeClient before this method + // is invoked. + mTimer.cancel(); + mTimer = null; + + pauseAndDispatch(mProxy); + + mLayout.removeView(getSurfaceView()); + + if (mProgressView != null) { + mLayout.removeView(mProgressView); + mProgressView = null; + } + mLayout = null; + // Re enable plugin views. + mProxy.getWebView().getViewManager().showAll(); + + mProxy = null; + } + }; + + @Override + public void enterFullScreenVideoState(int layerId, + HTML5VideoViewProxy proxy, WebView webView) { + mFullScreenMode = FULLSCREEN_SURFACECREATING; + mCurrentBufferPercentage = 0; + mPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener); + mProxy = proxy; + + mSurfaceView.getHolder().addCallback(mSHCallback); + mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); + mSurfaceView.setFocusable(true); + mSurfaceView.setFocusableInTouchMode(true); + mSurfaceView.requestFocus(); + + // Create a FrameLayout that will contain the VideoView and the + // progress view (if any). + mLayout = new FrameLayout(mProxy.getContext()); + FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT, + Gravity.CENTER); + + mLayout.addView(getSurfaceView(), layoutParams); + + mLayout.setVisibility(View.VISIBLE); + + WebChromeClient client = webView.getWebChromeClient(); + client.onShowCustomView(mLayout, mCallback); + // Plugins like Flash will draw over the video so hide + // them while we're playing. + mProxy.getWebView().getViewManager().hideAll(); + + mProgressView = client.getVideoLoadingProgressView(); + if (mProgressView != null) { + mLayout.addView(mProgressView, layoutParams); + mProgressView.setVisibility(View.VISIBLE); + } + + } + + /** + * @return true when we are in full screen mode, even the surface not fully + * created. + */ + public boolean isFullScreenMode() { + return true; + } + + // MediaController FUNCTIONS: + @Override + public boolean canPause() { + return mCanPause; + } + + @Override + public boolean canSeekBackward() { + return mCanSeekBack; + } + + @Override + public boolean canSeekForward() { + return mCanSeekForward; + } + + @Override + public int getBufferPercentage() { + if (mPlayer != null) { + return mCurrentBufferPercentage; + } + return 0; + } + + // Other listeners functions: + private MediaPlayer.OnBufferingUpdateListener mBufferingUpdateListener = + new MediaPlayer.OnBufferingUpdateListener() { + public void onBufferingUpdate(MediaPlayer mp, int percent) { + mCurrentBufferPercentage = percent; + } + }; + + @Override + public boolean onTouch(View v, MotionEvent event) { + if (mFullScreenMode >= FULLSCREEN_SURFACECREATED + && mMediaController != null) { + toggleMediaControlsVisiblity(); + } + return false; + } + +} diff --git a/core/java/android/webkit/HTML5VideoInline.java b/core/java/android/webkit/HTML5VideoInline.java new file mode 100644 index 000000000000..f1d91890ea92 --- /dev/null +++ b/core/java/android/webkit/HTML5VideoInline.java @@ -0,0 +1,99 @@ + +package android.webkit; + +import android.graphics.SurfaceTexture; +import android.media.MediaPlayer; +import android.webkit.HTML5VideoView; +import android.webkit.HTML5VideoViewProxy; +import android.opengl.GLES20; + +/** + * @hide This is only used by the browser + */ +public class HTML5VideoInline extends HTML5VideoView{ + + // Due to the fact that SurfaceTexture consume a lot of memory, we make it + // as static. m_textureNames is the texture bound with this SurfaceTexture. + private static SurfaceTexture mSurfaceTexture = null; + private static int[] mTextureNames; + + // Only when the video is prepared, we render using SurfaceTexture. + // This in fact is used to avoid showing the obsolete content when + // switching videos. + private static boolean mReadyToUseSurfTex = false; + + // Video control FUNCTIONS: + @Override + public void start() { + super.start(); + if (mCurrentState == STATE_PREPARED) { + mReadyToUseSurfTex = true; + } + } + + HTML5VideoInline(int videoLayerId, int position, + boolean autoStart) { + init(videoLayerId, position, autoStart); + mReadyToUseSurfTex = false; + } + + @Override + public void decideDisplayMode() { + mPlayer.setTexture(getSurfaceTextureInstance()); + } + + // Normally called immediately after setVideoURI. But for full screen, + // this should be after surface holder created + @Override + public void prepareDataAndDisplayMode(HTML5VideoViewProxy proxy) { + super.prepareDataAndDisplayMode(proxy); + setFrameAvailableListener(proxy); + } + + // Pause the play and update the play/pause button + @Override + public void pauseAndDispatch(HTML5VideoViewProxy proxy) { + super.pauseAndDispatch(proxy); + mReadyToUseSurfTex = false; + } + + // Inline Video specific FUNCTIONS: + + @Override + public SurfaceTexture getSurfaceTexture() { + return mSurfaceTexture; + } + + @Override + public void deleteSurfaceTexture() { + mSurfaceTexture = null; + return; + } + + // SurfaceTexture is a singleton here , too + private SurfaceTexture getSurfaceTextureInstance() { + // Create the surface texture. + if (mSurfaceTexture == null) + { + mTextureNames = new int[1]; + GLES20.glGenTextures(1, mTextureNames, 0); + mSurfaceTexture = new SurfaceTexture(mTextureNames[0]); + } + return mSurfaceTexture; + } + + @Override + public int getTextureName() { + return mTextureNames[0]; + } + + @Override + public boolean getReadyToUseSurfTex() { + return mReadyToUseSurfTex; + } + + private void setFrameAvailableListener(SurfaceTexture.OnFrameAvailableListener l) { + mSurfaceTexture.setOnFrameAvailableListener(l); + } + +} diff --git a/core/java/android/webkit/HTML5VideoView.java b/core/java/android/webkit/HTML5VideoView.java index 2312160f5c66..ade7106fb093 100644 --- a/core/java/android/webkit/HTML5VideoView.java +++ b/core/java/android/webkit/HTML5VideoView.java @@ -4,72 +4,93 @@ package android.webkit; import android.graphics.SurfaceTexture; import android.media.MediaPlayer; import android.util.Log; +import android.view.SurfaceView; import android.webkit.HTML5VideoViewProxy; -import android.widget.MediaController; -import android.opengl.GLES20; import java.io.IOException; +import java.util.HashMap; import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; /** * @hide This is only used by the browser */ public class HTML5VideoView implements MediaPlayer.OnPreparedListener{ - // Due to the fact that SurfaceTexture consume a lot of memory, we make it - // as static. m_textureNames is the texture bound with this SurfaceTexture. - private static SurfaceTexture mSurfaceTexture = null; - private static int[] mTextureNames; - // Only when the video is prepared, we render using SurfaceTexture. - // This in fact is used to avoid showing the obsolete content when - // switching videos. - private static boolean mReadyToUseSurfTex = false; + protected static final String LOGTAG = "HTML5VideoView"; + + protected static final String COOKIE = "Cookie"; + protected static final String HIDE_URL_LOGS = "x-hide-urls-from-log"; // For handling the seekTo before prepared, we need to know whether or not // the video is prepared. Therefore, we differentiate the state between // prepared and not prepared. // When the video is not prepared, we will have to save the seekTo time, // and use it when prepared to play. - private static final int STATE_NOTPREPARED = 0; - private static final int STATE_PREPARED = 1; + protected static final int STATE_NOTPREPARED = 0; + protected static final int STATE_PREPARED = 1; - // We only need state for handling seekTo - private int mCurrentState; + protected int mCurrentState; - // Basically for calling back the OnPrepared in the proxy - private HTML5VideoViewProxy mProxy; + protected HTML5VideoViewProxy mProxy; // Save the seek time when not prepared. This can happen when switching // video besides initial load. - private int mSaveSeekTime; + protected int mSaveSeekTime; // This is used to find the VideoLayer on the native side. - private int mVideoLayerId; + protected int mVideoLayerId; // Every video will have one MediaPlayer. Given the fact we only have one // SurfaceTexture, there is only one MediaPlayer in action. Every time we // switch videos, a new instance of MediaPlayer will be created in reset(). - private MediaPlayer mPlayer; + // Switching between inline and full screen will also create a new instance. + protected MediaPlayer mPlayer; + + // This will be set up every time we create the Video View object. + // Set to true only when switching into full screen while playing + protected boolean mAutostart; + + // We need to save such info. + protected String mUri; + protected Map<String, String> mHeaders; - private static HTML5VideoView mInstance = new HTML5VideoView(); + // The timer for timeupate events. + // See http://www.whatwg.org/specs/web-apps/current-work/#event-media-timeupdate + protected static Timer mTimer; - // Video control FUNCTIONS: + // The spec says the timer should fire every 250 ms or less. + private static final int TIMEUPDATE_PERIOD = 250; // ms + + // common Video control FUNCTIONS: public void start() { if (mCurrentState == STATE_PREPARED) { mPlayer.start(); - mReadyToUseSurfTex = true; } } public void pause() { - mPlayer.pause(); + if (mCurrentState == STATE_PREPARED && mPlayer.isPlaying()) { + mPlayer.pause(); + } + if (mTimer != null) { + mTimer.purge(); + } } public int getDuration() { - return mPlayer.getDuration(); + if (mCurrentState == STATE_PREPARED) { + return mPlayer.getDuration(); + } else { + return -1; + } } public int getCurrentPosition() { - return mPlayer.getCurrentPosition(); + if (mCurrentState == STATE_PREPARED) { + return mPlayer.getCurrentPosition(); + } + return 0; } public void seekTo(int pos) { @@ -88,54 +109,51 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener{ } public void stopPlayback() { - mPlayer.stop(); + if (mCurrentState == STATE_PREPARED) { + mPlayer.stop(); + } } - private void reset(int videoLayerId) { + public boolean getAutostart() { + return mAutostart; + } + + // Every time we start a new Video, we create a VideoView and a MediaPlayer + public void init(int videoLayerId, int position, boolean autoStart) { mPlayer = new MediaPlayer(); mCurrentState = STATE_NOTPREPARED; mProxy = null; mVideoLayerId = videoLayerId; - mReadyToUseSurfTex = false; + mSaveSeekTime = position; + mAutostart = autoStart; } - public static HTML5VideoView getInstance(int videoLayerId) { - // Every time we switch between the videos, a new MediaPlayer will be - // created. Make sure we call the m_player.release() when it is done. - mInstance.reset(videoLayerId); - return mInstance; + protected HTML5VideoView() { } - private HTML5VideoView() { - // This is a singleton across WebViews (i.e. Tabs). - // HTML5VideoViewProxy will reset the internal state every time a new - // video start. - } + protected static Map<String, String> generateHeaders(String url, + HTML5VideoViewProxy proxy) { + boolean isPrivate = proxy.getWebView().isPrivateBrowsingEnabled(); + String cookieValue = CookieManager.getInstance().getCookie(url, isPrivate); + Map<String, String> headers = new HashMap<String, String>(); + if (cookieValue != null) { + headers.put(COOKIE, cookieValue); + } + if (isPrivate) { + headers.put(HIDE_URL_LOGS, "true"); + } - public void setMediaController(MediaController m) { - this.setMediaController(m); + return headers; } - public void setVideoURI(String uri, Map<String, String> headers) { + public void setVideoURI(String uri, HTML5VideoViewProxy proxy) { // When switching players, surface texture will be reused. - mPlayer.setTexture(getSurfaceTextureInstance()); + mUri = uri; + mHeaders = generateHeaders(uri, proxy); - // When there is exception, we could just bail out silently. - // No Video will be played though. Write the stack for debug - try { - mPlayer.setDataSource(uri, headers); - mPlayer.prepareAsync(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalStateException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } + mTimer = new Timer(); } - // TODO [FULL SCREEN SUPPORT] - // Listeners setup FUNCTIONS: public void setOnCompletionListener(HTML5VideoViewProxy proxy) { mPlayer.setOnCompletionListener(proxy); @@ -150,43 +168,47 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener{ mPlayer.setOnPreparedListener(this); } - // Inline Video specific FUNCTIONS: + // Normally called immediately after setVideoURI. But for full screen, + // this should be after surface holder created + public void prepareDataAndDisplayMode(HTML5VideoViewProxy proxy) { + // SurfaceTexture will be created lazily here for inline mode + decideDisplayMode(); - public SurfaceTexture getSurfaceTexture() { - return mSurfaceTexture; - } + setOnCompletionListener(proxy); + setOnPreparedListener(proxy); + setOnErrorListener(proxy); - public void deleteSurfaceTexture() { - mSurfaceTexture = null; - return; - } - - // SurfaceTexture is a singleton here , too - private SurfaceTexture getSurfaceTextureInstance() { - // Create the surface texture. - if (mSurfaceTexture == null) - { - mTextureNames = new int[1]; - GLES20.glGenTextures(1, mTextureNames, 0); - mSurfaceTexture = new SurfaceTexture(mTextureNames[0]); + // When there is exception, we could just bail out silently. + // No Video will be played though. Write the stack for debug + try { + mPlayer.setDataSource(mUri, mHeaders); + mPlayer.prepareAsync(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalStateException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); } - return mSurfaceTexture; } - public int getTextureName() { - return mTextureNames[0]; - } + // Common code public int getVideoLayerId() { return mVideoLayerId; } - public boolean getReadyToUseSurfTex() { - return mReadyToUseSurfTex; - } + private static final class TimeupdateTask extends TimerTask { + private HTML5VideoViewProxy mProxy; - public void setFrameAvailableListener(SurfaceTexture.OnFrameAvailableListener l) { - mSurfaceTexture.setOnFrameAvailableListener(l); + public TimeupdateTask(HTML5VideoViewProxy proxy) { + mProxy = proxy; + } + + @Override + public void run() { + mProxy.onTimeupdate(); + } } @Override @@ -195,6 +217,9 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener{ seekTo(mSaveSeekTime); if (mProxy != null) mProxy.onPrepared(mp); + + mTimer.schedule(new TimeupdateTask(mProxy), TIMEUPDATE_PERIOD, TIMEUPDATE_PERIOD); + } // Pause the play and update the play/pause button @@ -205,7 +230,42 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener{ proxy.dispatchOnPaused(); } } - mReadyToUseSurfTex = false; + } + + // Below are functions that are different implementation on inline and full- + // screen mode. Some are specific to one type, but currently are called + // directly from the proxy. + public void enterFullScreenVideoState(int layerId, + HTML5VideoViewProxy proxy, WebView webView) { + } + + public boolean isFullScreenMode() { + return false; + } + + public SurfaceView getSurfaceView() { + return null; + } + + public void decideDisplayMode() { + } + + public void prepareForFullScreen() { + } + + public boolean getReadyToUseSurfTex() { + return false; + } + + public SurfaceTexture getSurfaceTexture() { + return null; + } + + public void deleteSurfaceTexture() { + } + + public int getTextureName() { + return 0; } } diff --git a/core/java/android/webkit/HTML5VideoViewProxy.java b/core/java/android/webkit/HTML5VideoViewProxy.java index b614d8f5467c..d3fcfa510eef 100644 --- a/core/java/android/webkit/HTML5VideoViewProxy.java +++ b/core/java/android/webkit/HTML5VideoViewProxy.java @@ -21,29 +21,16 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.SurfaceTexture; import android.media.MediaPlayer; -import android.media.MediaPlayer.OnPreparedListener; -import android.media.MediaPlayer.OnCompletionListener; -import android.media.MediaPlayer.OnErrorListener; import android.net.http.EventHandler; import android.net.http.Headers; import android.net.http.RequestHandle; import android.net.http.RequestQueue; import android.net.http.SslCertificate; import android.net.http.SslError; -import android.net.Uri; -import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; -import android.view.MotionEvent; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AbsoluteLayout; -import android.widget.FrameLayout; -import android.widget.MediaController; -import android.widget.VideoView; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -51,8 +38,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; import java.util.Map; -import java.util.Timer; -import java.util.TimerTask; /** * <p>Proxy for HTML5 video views. @@ -78,9 +63,6 @@ class HTML5VideoViewProxy extends Handler private static final int POSTER_FETCHED = 202; private static final int PAUSED = 203; - private static final String COOKIE = "Cookie"; - private static final String HIDE_URL_LOGS = "x-hide-urls-from-log"; - // Timer thread -> UI thread private static final int TIMEUPDATE = 300; @@ -104,38 +86,19 @@ class HTML5VideoViewProxy extends Handler // The VideoView instance. This is a singleton for now, at least until // http://b/issue?id=1973663 is fixed. private static HTML5VideoView mHTML5VideoView; - // The progress view. - private static View mProgressView; - // The container for the progress view and video view - private static FrameLayout mLayout; - // The timer for timeupate events. - // See http://www.whatwg.org/specs/web-apps/current-work/#event-media-timeupdate - private static Timer mTimer; - private static final class TimeupdateTask extends TimerTask { - private HTML5VideoViewProxy mProxy; - - public TimeupdateTask(HTML5VideoViewProxy proxy) { - mProxy = proxy; - } - public void run() { - mProxy.onTimeupdate(); - } - } - // The spec says the timer should fire every 250 ms or less. - private static final int TIMEUPDATE_PERIOD = 250; // ms private static boolean isVideoSelfEnded = false; // By using the baseLayer and the current video Layer ID, we can // identify the exact layer on the UI thread to use the SurfaceTexture. private static int mBaseLayer = 0; - // TODO: [FULL SCREEN SUPPORT] - // Every time webView setBaseLayer, this will be called. // When we found the Video layer, then we set the Surface Texture to it. // Otherwise, we may want to delete the Surface Texture to save memory. public static void setBaseLayer(int layer) { - if (mHTML5VideoView != null) { + // Don't do this for full screen mode. + if (mHTML5VideoView != null + && !mHTML5VideoView.isFullScreenMode()) { mBaseLayer = layer; SurfaceTexture surfTexture = mHTML5VideoView.getSurfaceTexture(); int textureName = mHTML5VideoView.getTextureName(); @@ -165,16 +128,47 @@ class HTML5VideoViewProxy extends Handler } } + public static void enterFullScreenVideo(int layerId, String url, + HTML5VideoViewProxy proxy, WebView webView) { + // Save the inline video info and inherit it in the full screen + int savePosition = 0; + boolean savedIsPlaying = false; + if (mHTML5VideoView != null) { + // If we are playing the same video, then it is better to + // save the current position. + if (layerId == mHTML5VideoView.getVideoLayerId()) { + savePosition = mHTML5VideoView.getCurrentPosition(); + savedIsPlaying = mHTML5VideoView.isPlaying(); + } + mHTML5VideoView.pauseAndDispatch(mCurrentProxy); + mHTML5VideoView.release(); + } + mHTML5VideoView = new HTML5VideoFullScreen(proxy.getContext(), + layerId, savePosition, savedIsPlaying); + mCurrentProxy = proxy; + + mHTML5VideoView.setVideoURI(url, mCurrentProxy); + + mHTML5VideoView.enterFullScreenVideoState(layerId, proxy, webView); + } + // This is on the UI thread. // When native tell Java to play, we need to check whether or not it is // still the same video by using videoLayerId and treat it differently. public static void play(String url, int time, HTML5VideoViewProxy proxy, WebChromeClient client, int videoLayerId) { int currentVideoLayerId = -1; - if (mHTML5VideoView != null) + boolean backFromFullScreenMode = false; + + if (mHTML5VideoView != null) { currentVideoLayerId = mHTML5VideoView.getVideoLayerId(); + if (mHTML5VideoView instanceof HTML5VideoFullScreen) { + backFromFullScreenMode = true; + } + } - if (currentVideoLayerId != videoLayerId + if (backFromFullScreenMode + || currentVideoLayerId != videoLayerId || mHTML5VideoView.getSurfaceTexture() == null) { // Here, we handle the case when switching to a new video, // either inside a WebView or across WebViews @@ -186,35 +180,11 @@ class HTML5VideoViewProxy extends Handler // release the media player to avoid finalize error mHTML5VideoView.release(); } - // HTML5VideoView is singleton, however, the internal state will - // be reset since we are switching from one video to another. - // Then we need to set up all the source/listener etc... - mHTML5VideoView = HTML5VideoView.getInstance(videoLayerId); - mCurrentProxy = proxy; + mHTML5VideoView = new HTML5VideoInline(videoLayerId, time, false); - // TODO: [FULL SCREEN SUPPORT] - - boolean isPrivate = mCurrentProxy.getWebView().isPrivateBrowsingEnabled(); - String cookieValue = CookieManager.getInstance().getCookie(url, isPrivate); - Map<String, String> headers = new HashMap<String, String>(); - if (cookieValue != null) { - headers.put(COOKIE, cookieValue); - } - if (isPrivate) { - headers.put(HIDE_URL_LOGS, "true"); - } - - mHTML5VideoView.setVideoURI(url, headers); - mHTML5VideoView.setOnCompletionListener(proxy); - mHTML5VideoView.setOnPreparedListener(proxy); - mHTML5VideoView.setOnErrorListener(proxy); - mHTML5VideoView.setFrameAvailableListener(proxy); - - mHTML5VideoView.seekTo(time); - - mTimer = new Timer(); - + mHTML5VideoView.setVideoURI(url, mCurrentProxy); + mHTML5VideoView.prepareDataAndDisplayMode(proxy); } else if (mCurrentProxy == proxy) { // Here, we handle the case when we keep playing with one video if (!mHTML5VideoView.isPlaying()) { @@ -222,7 +192,8 @@ class HTML5VideoViewProxy extends Handler mHTML5VideoView.start(); } } else if (mCurrentProxy != null) { - // Some other video is already playing. Notify the caller that its playback ended. + // Some other video is already playing. Notify the caller that + // its playback ended. proxy.dispatchOnEnded(); } } @@ -249,14 +220,14 @@ class HTML5VideoViewProxy extends Handler public static void pause(HTML5VideoViewProxy proxy) { if (mCurrentProxy == proxy && mHTML5VideoView != null) { mHTML5VideoView.pause(); - mTimer.purge(); } } public static void onPrepared() { - mHTML5VideoView.start(); - mTimer.schedule(new TimeupdateTask(mCurrentProxy), TIMEUPDATE_PERIOD, TIMEUPDATE_PERIOD); - // TODO: [FULL SCREEN SUPPORT] + if (!mHTML5VideoView.isFullScreenMode() || + mHTML5VideoView.isFullScreenMode() && + mHTML5VideoView.getAutostart() ) + mHTML5VideoView.start(); } public static void end() { @@ -349,8 +320,6 @@ class HTML5VideoViewProxy extends Handler VideoPlayer.isVideoSelfEnded = true; VideoPlayer.end(); break; - // TODO: [FULL SCREEN SUPPORT] - // For full screen case, end may need hide the view. case ERROR: { WebChromeClient client = mWebView.getWebChromeClient(); if (client != null) { @@ -665,7 +634,7 @@ class HTML5VideoViewProxy extends Handler mPosterDownloader.start(); } - // These two function are called from UI thread only by WebView. + // These three function are called from UI thread only by WebView. public void setBaseLayer(int layer) { VideoPlayer.setBaseLayer(layer); } @@ -673,6 +642,11 @@ class HTML5VideoViewProxy extends Handler public void pauseAndDispatch() { VideoPlayer.pauseAndDispatch(); } + + public void enterFullScreenVideo(int layerId, String url) { + VideoPlayer.enterFullScreenVideo(layerId, url, this, mWebView); + } + /** * The factory for HTML5VideoViewProxy instances. * @param webViewCore is the WebViewCore that is requesting the proxy. diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 3fb878cd0a15..01c73a8f6f11 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -4134,8 +4134,11 @@ public class WebView extends AbsoluteLayout if (mNativeClass != 0 && nativeEvaluateLayersAnimations()) { UIAnimationsRunning = true; // If we have unfinished (or unstarted) animations, - // we ask for a repaint. - invalidate(); + // we ask for a repaint. We only need to do this in software + // rendering (with hardware rendering we already have a different + // method of requesting a repaint) + if (!canvas.isHardwareAccelerated()) + invalidate(); } // decide which adornments to draw @@ -7182,14 +7185,15 @@ public class WebView extends AbsoluteLayout private class TouchEventQueue { private long mNextTouchSequence = Long.MIN_VALUE + 1; private long mLastHandledTouchSequence = Long.MIN_VALUE; - private long mIgnoreUntilSequence = Long.MIN_VALUE; + private long mIgnoreUntilSequence = Long.MIN_VALUE + 1; private QueuedTouch mTouchEventQueue; private QueuedTouch mQueuedTouchRecycleBin; private int mQueuedTouchRecycleCount; + private long mLastEventTime = Long.MAX_VALUE; private static final int MAX_RECYCLED_QUEUED_TOUCH = 15; // milliseconds until we abandon hope of getting all of a previous gesture - private static final int QUEUED_GESTURE_TIMEOUT = 2000; + private static final int QUEUED_GESTURE_TIMEOUT = 1000; private QueuedTouch obtainQueuedTouch() { if (mQueuedTouchRecycleBin != null) { @@ -7223,7 +7227,7 @@ public class WebView extends AbsoluteLayout public void reset() { mNextTouchSequence = Long.MIN_VALUE + 1; mLastHandledTouchSequence = Long.MIN_VALUE; - mIgnoreUntilSequence = Long.MIN_VALUE; + mIgnoreUntilSequence = Long.MIN_VALUE + 1; while (mTouchEventQueue != null) { QueuedTouch recycleMe = mTouchEventQueue; mTouchEventQueue = mTouchEventQueue.mNext; @@ -7257,7 +7261,9 @@ public class WebView extends AbsoluteLayout return; } - dropStaleGestures(ted.mMotionEvent, ted.mSequence); + if (dropStaleGestures(ted.mMotionEvent, ted.mSequence)) { + return; + } if (mLastHandledTouchSequence + 1 == ted.mSequence) { handleQueuedTouchEventData(ted); @@ -7292,7 +7298,9 @@ public class WebView extends AbsoluteLayout public void enqueueTouchEvent(MotionEvent ev) { final long sequence = nextTouchSequence(); - dropStaleGestures(ev, sequence); + if (dropStaleGestures(ev, sequence)) { + return; + } if (mLastHandledTouchSequence + 1 == sequence) { handleQueuedMotionEvent(ev); @@ -7315,16 +7323,30 @@ public class WebView extends AbsoluteLayout } } - private void dropStaleGestures(MotionEvent ev, long sequence) { - if (mTouchEventQueue == null) return; + private boolean dropStaleGestures(MotionEvent ev, long sequence) { + if (ev != null && ev.getAction() == MotionEvent.ACTION_MOVE && !mConfirmMove) { + // This is to make sure that we don't attempt to process a tap + // or long press when webkit takes too long to get back to us. + // The movement will be properly confirmed when we process the + // enqueued event later. + final int dx = Math.round(ev.getX()) - mLastTouchX; + final int dy = Math.round(ev.getY()) - mLastTouchY; + if (dx * dx + dy * dy > mTouchSlopSquare) { + mPrivateHandler.removeMessages(SWITCH_TO_SHORTPRESS); + mPrivateHandler.removeMessages(SWITCH_TO_LONGPRESS); + } + } - MotionEvent nextQueueEvent = mTouchEventQueue.mTed != null ? - mTouchEventQueue.mTed.mMotionEvent : mTouchEventQueue.mEvent; + if (mTouchEventQueue == null) { + return sequence <= mLastHandledTouchSequence; + } - if (ev != null && ev.getAction() == MotionEvent.ACTION_DOWN && nextQueueEvent != null) { + // If we have a new down event and it's been a while since the last event + // we saw, just reset and keep going. + if (ev != null && ev.getAction() == MotionEvent.ACTION_DOWN) { long eventTime = ev.getEventTime(); - long nextQueueTime = nextQueueEvent.getEventTime(); - if (eventTime > nextQueueTime + QUEUED_GESTURE_TIMEOUT) { + long lastHandledEventTime = mLastEventTime; + if (eventTime > lastHandledEventTime + QUEUED_GESTURE_TIMEOUT) { Log.w(LOGTAG, "Got ACTION_DOWN but still waiting on stale event. " + "Ignoring previous queued events."); QueuedTouch qd = mTouchEventQueue; @@ -7338,17 +7360,18 @@ public class WebView extends AbsoluteLayout } } - if (mIgnoreUntilSequence > mLastHandledTouchSequence) { + if (mIgnoreUntilSequence - 1 > mLastHandledTouchSequence) { QueuedTouch qd = mTouchEventQueue; - while (qd != null && qd.mSequence < mIgnoreUntilSequence && - qd.mSequence < sequence) { - mLastHandledTouchSequence = qd.mSequence; + while (qd != null && qd.mSequence < mIgnoreUntilSequence) { QueuedTouch recycleMe = qd; qd = qd.mNext; recycleQueuedTouch(recycleMe); } mTouchEventQueue = qd; + mLastHandledTouchSequence = mIgnoreUntilSequence - 1; } + + return sequence <= mLastHandledTouchSequence; } private void handleQueuedTouch(QueuedTouch qt) { @@ -7361,6 +7384,7 @@ public class WebView extends AbsoluteLayout } private void handleQueuedMotionEvent(MotionEvent ev) { + mLastEventTime = ev.getEventTime(); int action = ev.getActionMasked(); if (ev.getPointerCount() > 1) { // Multi-touch handleMultiTouchInWebView(ev); @@ -7378,6 +7402,9 @@ public class WebView extends AbsoluteLayout } private void handleQueuedTouchEventData(TouchEventData ted) { + if (ted.mMotionEvent != null) { + mLastEventTime = ted.mMotionEvent.getEventTime(); + } if (!ted.mReprocess) { if (ted.mAction == MotionEvent.ACTION_DOWN && mPreventDefault == PREVENT_DEFAULT_MAYBE_YES) { @@ -7857,7 +7884,11 @@ public class WebView extends AbsoluteLayout case ENTER_FULLSCREEN_VIDEO: int layerId = msg.arg1; - Log.v(LOGTAG, "Display the video layer " + layerId + " fullscreen"); + + String url = (String) msg.obj; + if (mHTML5VideoViewProxy != null) { + mHTML5VideoViewProxy.enterFullScreenVideo(layerId, url); + } break; case SHOW_FULLSCREEN: { diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index bed77ef7357c..3b989dc99dee 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -483,10 +483,12 @@ final class WebViewCore { /** * Notify the webview that we want to display the video layer fullscreen. */ - protected void enterFullscreenForVideoLayer(int layerId) { + protected void enterFullscreenForVideoLayer(int layerId, String url) { if (mWebView == null) return; - Message.obtain(mWebView.mPrivateHandler, - WebView.ENTER_FULLSCREEN_VIDEO, layerId, 0).sendToTarget(); + Message message = Message.obtain(mWebView.mPrivateHandler, + WebView.ENTER_FULLSCREEN_VIDEO, layerId, 0); + message.obj = url; + message.sendToTarget(); } //------------------------------------------------------------------------- diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 818b03c8ad9a..ca27ac79fddc 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -464,7 +464,7 @@ <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"modifier/supprimer le contenu de la carte SD"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6594393334785738252">"Autorise une application à écrire sur la mémoire USB."</string> <string name="permdesc_sdcardWrite" product="default" msgid="6643963204976471878">"Autorise une application à écrire sur la carte SD."</string> - <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modif./suppr. contenu mémoire interne support"</string> + <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"modif./suppr. contenu mémoire interne"</string> <string name="permdesc_mediaStorageWrite" product="default" msgid="8232008512478316233">"Permet à une application de modifier le contenu de la mémoire de stockage interne du support."</string> <string name="permlab_cache_filesystem" msgid="5656487264819669824">"accéder au système de fichiers en cache"</string> <string name="permdesc_cache_filesystem" msgid="1624734528435659906">"Permet à une application de lire et d\'écrire dans le système de fichiers en cache."</string> @@ -923,7 +923,7 @@ <string name="ext_media_badremoval_notification_title" product="default" msgid="6872152882604407837">"Carte SD retirée inopinément"</string> <string name="ext_media_badremoval_notification_message" product="nosdcard" msgid="4329848819865594241">"Désinstaller la mémoire de stockage USB avant de la retirer pour éviter toute perte de données."</string> <string name="ext_media_badremoval_notification_message" product="default" msgid="7260183293747448241">"Désinstaller la carte SD avant de la retirer pour éviter toute perte de données."</string> - <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"La mémoire de stockage USB peut être retirée en toute sécurité."</string> + <string name="ext_media_safe_unmount_notification_title" product="nosdcard" msgid="3967973893270360230">"Vous pouvez retirer la mémoire USB."</string> <string name="ext_media_safe_unmount_notification_title" product="default" msgid="6729801130790616200">"La carte SD peut être retirée en toute sécurité"</string> <string name="ext_media_safe_unmount_notification_message" product="nosdcard" msgid="6142195361606493530">"Vous pouvez retirer la mémoire de stockage USB en toute sécurité."</string> <string name="ext_media_safe_unmount_notification_message" product="default" msgid="568841278138377604">"Vous pouvez retirer la carte SD en toute sécurité."</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index b2cedd8a9864..10a2898b3b33 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -464,8 +464,8 @@ <string name="permlab_sdcardWrite" product="default" msgid="8079403759001777291">"изменять/удалять содержимое SD-карты"</string> <string name="permdesc_sdcardWrite" product="nosdcard" msgid="6594393334785738252">"Разрешает приложению запись на USB-накопитель."</string> <string name="permdesc_sdcardWrite" product="default" msgid="6643963204976471878">"Разрешает приложению запись на SD-карту"</string> - <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"изм./удал. содерж. мультимедиа"</string> - <string name="permdesc_mediaStorageWrite" product="default" msgid="8232008512478316233">"Позволяет приложению изменять содержание внутреннего хранилища мультимедиа."</string> + <string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"изменение/удаление данных из внутреннего хранилища мультимедиа"</string> + <string name="permdesc_mediaStorageWrite" product="default" msgid="8232008512478316233">"Приложение сможет изменять содержание внутреннего хранилища мультимедиа."</string> <string name="permlab_cache_filesystem" msgid="5656487264819669824">"получать доступ к кэшу файловой системы"</string> <string name="permdesc_cache_filesystem" msgid="1624734528435659906">"Разрешает программам доступ для записи и чтения к кэшу файловой системы."</string> <string name="permlab_use_sip" msgid="5986952362795870502">"совершать и принимать интернет-вызовы"</string> diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index 1b10c5cc24c8..b51279ab544c 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -83,17 +83,17 @@ public class RenderScript { int alphaMin, int alphaPref, int depthMin, int depthPref, int stencilMin, int stencilPref, - int samplesMin, int samplesPref, float samplesQ); + int samplesMin, int samplesPref, float samplesQ, int dpi); synchronized int nContextCreateGL(int dev, int ver, int colorMin, int colorPref, int alphaMin, int alphaPref, int depthMin, int depthPref, int stencilMin, int stencilPref, - int samplesMin, int samplesPref, float samplesQ) { + int samplesMin, int samplesPref, float samplesQ, int dpi) { return rsnContextCreateGL(dev, ver, colorMin, colorPref, alphaMin, alphaPref, depthMin, depthPref, stencilMin, stencilPref, - samplesMin, samplesPref, samplesQ); + samplesMin, samplesPref, samplesQ, dpi); } native int rsnContextCreate(int dev, int ver); synchronized int nContextCreate(int dev, int ver) { diff --git a/graphics/java/android/renderscript/RenderScriptGL.java b/graphics/java/android/renderscript/RenderScriptGL.java index 4359795e43e6..d4b5434ae3a7 100644 --- a/graphics/java/android/renderscript/RenderScriptGL.java +++ b/graphics/java/android/renderscript/RenderScriptGL.java @@ -165,13 +165,14 @@ public class RenderScriptGL extends RenderScript { mWidth = 0; mHeight = 0; mDev = nDeviceCreate(); + int dpi = ctx.getResources().getDisplayMetrics().densityDpi; mContext = nContextCreateGL(mDev, 0, mSurfaceConfig.mColorMin, mSurfaceConfig.mColorPref, mSurfaceConfig.mAlphaMin, mSurfaceConfig.mAlphaPref, mSurfaceConfig.mDepthMin, mSurfaceConfig.mDepthPref, mSurfaceConfig.mStencilMin, mSurfaceConfig.mStencilPref, mSurfaceConfig.mSamplesMin, mSurfaceConfig.mSamplesPref, - mSurfaceConfig.mSamplesQ); + mSurfaceConfig.mSamplesQ, dpi); if (mContext == 0) { throw new RSDriverException("Failed to create RS context."); } diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index f86343a416f3..2afd74ce13a0 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -164,7 +164,8 @@ nContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, int alphaMin, int alphaPref, int depthMin, int depthPref, int stencilMin, int stencilPref, - int samplesMin, int samplesPref, float samplesQ) + int samplesMin, int samplesPref, float samplesQ, + int dpi) { RsSurfaceConfig sc; sc.alphaMin = alphaMin; @@ -178,7 +179,7 @@ nContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, sc.samplesQ = samplesQ; LOG_API("nContextCreateGL"); - return (jint)rsContextCreateGL((RsDevice)dev, ver, sc); + return (jint)rsContextCreateGL((RsDevice)dev, ver, sc, dpi); } static void @@ -1213,7 +1214,7 @@ static JNINativeMethod methods[] = { // All methods below are thread protected in java. {"rsnContextCreate", "(II)I", (void*)nContextCreate }, -{"rsnContextCreateGL", "(IIIIIIIIIIIIF)I", (void*)nContextCreateGL }, +{"rsnContextCreateGL", "(IIIIIIIIIIIIFI)I", (void*)nContextCreateGL }, {"rsnContextFinish", "(I)V", (void*)nContextFinish }, {"rsnContextSetPriority", "(II)V", (void*)nContextSetPriority }, {"rsnContextSetSurface", "(IIILandroid/view/Surface;)V", (void*)nContextSetSurface }, diff --git a/include/utils/Functor.h b/include/utils/Functor.h index 565f4a3c8568..e24ded4cf5ec 100644 --- a/include/utils/Functor.h +++ b/include/utils/Functor.h @@ -25,8 +25,7 @@ class Functor { public: Functor() {} virtual ~Functor() {} - virtual status_t operator ()() { return true; } - virtual status_t operator ()(float* data, uint32_t len) { return true; } + virtual status_t operator ()(int what, void* data) { return NO_ERROR; } }; }; // namespace android diff --git a/include/utils/Vector.h b/include/utils/Vector.h index ec851bd0b5f4..6fd307f3b63b 100644 --- a/include/utils/Vector.h +++ b/include/utils/Vector.h @@ -162,6 +162,9 @@ public: inline status_t sort(compar_t cmp); inline status_t sort(compar_r_t cmp, void* state); + // for debugging only + inline size_t getItemSize() const { return itemSize(); } + protected: virtual void do_construct(void* storage, size_t num) const; virtual void do_destroy(void* storage, size_t num) const; diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index e01e072ee5e3..d26580408be8 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -216,21 +216,41 @@ bool OpenGLRenderer::callDrawGLFunction(Functor *functor, Rect& dirty) { setScissorFromClip(); } + Rect clip(*mSnapshot->clipRect); + clip.snapToPixelBoundaries(); + #if RENDER_LAYERS_AS_REGIONS // Since we don't know what the functor will draw, let's dirty // tne entire clip region if (hasLayer()) { - Rect clip(*mSnapshot->clipRect); - clip.snapToPixelBoundaries(); dirtyLayerUnchecked(clip, getRegion()); } #endif - float bounds[4]; - status_t result = (*functor)(&bounds[0], 4); + struct { + // Input: current clip rect + int clipLeft; + int clipTop; + int clipRight; + int clipBottom; + + // Output: dirty region to redraw + float dirtyLeft; + float dirtyTop; + float dirtyRight; + float dirtyBottom; + } constraints; + + constraints.clipLeft = clip.left; + constraints.clipTop = clip.top; + constraints.clipRight = clip.right; + constraints.clipBottom = clip.bottom; + + status_t result = (*functor)(0, &constraints); if (result != 0) { - Rect localDirty(bounds[0], bounds[1], bounds[2], bounds[3]); + Rect localDirty(constraints.dirtyLeft, constraints.dirtyTop, + constraints.dirtyRight, constraints.dirtyBottom); dirty.unionWith(localDirty); } diff --git a/libs/rs/RenderScript.h b/libs/rs/RenderScript.h index bb5e4aa29015..ffa9a8c8b74b 100644 --- a/libs/rs/RenderScript.h +++ b/libs/rs/RenderScript.h @@ -76,7 +76,8 @@ void rsDeviceDestroy(RsDevice); void rsDeviceSetConfig(RsDevice, RsDeviceParam, int32_t value); RsContext rsContextCreate(RsDevice, uint32_t version); -RsContext rsContextCreateGL(RsDevice, uint32_t version, RsSurfaceConfig sc); +RsContext rsContextCreateGL(RsDevice, uint32_t version, + RsSurfaceConfig sc, uint32_t dpi); void rsContextDestroy(RsContext); enum RsMessageToClientType { diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp index f9e29f1dd953..c63d183c7b59 100644 --- a/libs/rs/rsContext.cpp +++ b/libs/rs/rsContext.cpp @@ -630,6 +630,7 @@ Context::Context() { mPaused = false; mObjHead = NULL; mError = RS_ERROR_NONE; + mDPI = 96; } Context * Context::createContext(Device *dev, const RsSurfaceConfig *sc) { @@ -1078,10 +1079,12 @@ RsContext rsContextCreate(RsDevice vdev, uint32_t version) { return rsc; } -RsContext rsContextCreateGL(RsDevice vdev, uint32_t version, RsSurfaceConfig sc) { +RsContext rsContextCreateGL(RsDevice vdev, uint32_t version, + RsSurfaceConfig sc, uint32_t dpi) { LOGV("rsContextCreateGL %p", vdev); Device * dev = static_cast<Device *>(vdev); Context *rsc = Context::createContext(dev, &sc); + rsc->setDPI(dpi); LOGV("rsContextCreateGL ret %p ", rsc); return rsc; } diff --git a/libs/rs/rsContext.h b/libs/rs/rsContext.h index c5e32a67dd13..50f63df44401 100644 --- a/libs/rs/rsContext.h +++ b/libs/rs/rsContext.h @@ -218,6 +218,8 @@ public: void launchThreads(WorkerCallback_t cbk, void *data); uint32_t getWorkerPoolSize() const {return (uint32_t)mWorkers.mCount;} + uint32_t getDPI() const {return mDPI;} + void setDPI(uint32_t dpi) {mDPI = dpi;} protected: Device *mDev; @@ -258,6 +260,7 @@ protected: float EXT_texture_max_aniso; } mGL; + uint32_t mDPI; uint32_t mWidth; uint32_t mHeight; int32_t mThreadPriority; diff --git a/libs/rs/rsFont.cpp b/libs/rs/rsFont.cpp index 1c1bc989e0c4..01dbab8705de 100644 --- a/libs/rs/rsFont.cpp +++ b/libs/rs/rsFont.cpp @@ -733,7 +733,7 @@ void FontState::renderText(const char *text, uint32_t len, int32_t x, int32_t y, String8 fullPath(getenv("ANDROID_ROOT")); fullPath += fontsDir; - mDefault.set(Font::create(mRSC, fullPath.string(), 16, 96)); + mDefault.set(Font::create(mRSC, fullPath.string(), 8, mRSC->getDPI())); } currentFont = mDefault.get(); } diff --git a/libs/ui/Region.cpp b/libs/ui/Region.cpp index 1994f6a4325f..a060a5f39db5 100644 --- a/libs/ui/Region.cpp +++ b/libs/ui/Region.cpp @@ -56,6 +56,9 @@ Region::Region() Region::Region(const Region& rhs) : mBounds(rhs.mBounds), mStorage(rhs.mStorage) { +#if VALIDATE_REGIONS + validate(rhs, "rhs copy-ctor"); +#endif } Region::Region(const Rect& rhs) @@ -76,7 +79,8 @@ Region::~Region() Region& Region::operator = (const Region& rhs) { #if VALIDATE_REGIONS - validate(rhs, "operator="); + validate(*this, "this->operator="); + validate(rhs, "rhs.operator="); #endif mBounds = rhs.mBounds; mStorage = rhs.mStorage; @@ -366,6 +370,12 @@ void Region::boolean_operation(int op, Region& dst, const Region& lhs, const Region& rhs, int dx, int dy) { +#if VALIDATE_REGIONS + validate(lhs, "boolean_operation (before): lhs"); + validate(rhs, "boolean_operation (before): rhs"); + validate(dst, "boolean_operation (before): dst"); +#endif + size_t lhs_count; Rect const * const lhs_rects = lhs.getArray(&lhs_count); diff --git a/media/java/android/media/videoeditor/VideoEditorImpl.java b/media/java/android/media/videoeditor/VideoEditorImpl.java index 78557eef75e6..2105deb1b9e2 100755 --- a/media/java/android/media/videoeditor/VideoEditorImpl.java +++ b/media/java/android/media/videoeditor/VideoEditorImpl.java @@ -904,6 +904,10 @@ public class VideoEditorImpl implements VideoEditor { throw new IllegalArgumentException("Surface could not be retrieved from Surface holder"); } + if (surface.isValid() == false) { + throw new IllegalStateException("Surface is not valid"); + } + if (timeMs < 0) { throw new IllegalArgumentException("requested time not correct"); } else if (timeMs > mDurationMs) { @@ -1627,6 +1631,10 @@ public class VideoEditorImpl implements VideoEditor { throw new IllegalArgumentException("Surface could not be retrieved from surface holder"); } + if (surface.isValid() == false) { + throw new IllegalStateException("Surface is not valid"); + } + if (listener == null) { throw new IllegalArgumentException(); } @@ -1863,6 +1871,10 @@ public class VideoEditorImpl implements VideoEditor { throw new IllegalArgumentException("Surface could not be retrieved from surface holder"); } + if (surface.isValid() == false) { + throw new IllegalStateException("Surface is not valid"); + } + if (mMANativeHelper != null) { mMANativeHelper.clearPreviewSurface(surface); } else { diff --git a/media/java/android/mtp/MtpServer.java b/media/java/android/mtp/MtpServer.java index fe734e141cbc..006fa6d22aa2 100644 --- a/media/java/android/mtp/MtpServer.java +++ b/media/java/android/mtp/MtpServer.java @@ -24,6 +24,9 @@ import android.util.Log; */ public class MtpServer { + private final Object mLock = new Object(); + private boolean mStarted; + private static final String TAG = "MtpServer"; static { @@ -35,11 +38,19 @@ public class MtpServer { } public void start() { - native_start(); + synchronized (mLock) { + native_start(); + mStarted = true; + } } public void stop() { - native_stop(); + synchronized (mLock) { + if (mStarted) { + native_stop(); + mStarted = false; + } + } } public void sendObjectAdded(int handle) { diff --git a/media/jni/mediaeditor/VideoEditorMain.cpp b/media/jni/mediaeditor/VideoEditorMain.cpp index 8cda14eee2e4..11e2a5eb076a 100755 --- a/media/jni/mediaeditor/VideoEditorMain.cpp +++ b/media/jni/mediaeditor/VideoEditorMain.cpp @@ -557,6 +557,10 @@ static void videoEditor_clearSurface(JNIEnv* pEnv, Surface* const p = (Surface*)pEnv->GetIntField(surface, surface_native); sp<Surface> previewSurface = sp<Surface>(p); + // Validate the mSurface's mNativeSurface field + videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv, + (NULL == previewSurface.get()), + "mNativeSurface is null"); frameStr.pBuffer = M4OSA_NULL; frameStr.timeMs = 0; @@ -634,6 +638,10 @@ static int videoEditor_renderPreviewFrame(JNIEnv* pEnv, Surface* const p = (Surface*)pEnv->GetIntField(mSurface, surface_native); sp<Surface> previewSurface = sp<Surface>(p); + // Validate the mSurface's mNativeSurface field + videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv, + (NULL == previewSurface.get()), + "mNativeSurface is null"); /* Determine the total number of clips, total duration*/ uiNumberOfClipsInStoryBoard = pContext->pEditSettings->uiClipNumber; @@ -2058,6 +2066,10 @@ videoEditor_startPreview( Surface* const p = (Surface*)pEnv->GetIntField(mSurface, surface_native); sp<Surface> previewSurface = sp<Surface>(p); + // Validate the mSurface's mNativeSurface field + videoEditJava_checkAndThrowIllegalStateException(&needToBeLoaded, pEnv, + (NULL == previewSurface.get()), + "mNativeSurface is null"); result = pContext->mPreviewController->setSurface(previewSurface); videoEditJava_checkAndThrowRuntimeException(&needToBeLoaded, pEnv, diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaTestUtil.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaTestUtil.java index 0183b5df8d59..beb2927bce7f 100755 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaTestUtil.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaTestUtil.java @@ -17,9 +17,13 @@ package com.android.mediaframeworktest; import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.Writer; import android.os.Debug; import android.os.Environment; +import android.util.Log; /** * @@ -30,10 +34,13 @@ public class MediaTestUtil { private MediaTestUtil(){ } + private static String TAG = "MediaTestUtil"; private static final String STORAGE_PATH = Environment.getExternalStorageDirectory().toString(); + private static int mMediaStartMemory = 0; + private static int mDrmStartMemory = 0; - //Catpure the heapdump for memory leaksage analysis\ + //Catpure the heapdump for memory leaksage analysis public static void getNativeHeapDump (String name) throws Exception { System.gc(); System.runFinalization(); @@ -42,4 +49,103 @@ public class MediaTestUtil { Debug.dumpNativeHeap(o.getFD()); o.close(); } -}
\ No newline at end of file + + public static String captureMemInfo(String type) { + String cm = "ps "; + cm += type; + String memoryUsage = null; + + int ch; + try { + Process p = Runtime.getRuntime().exec(cm); + InputStream in = p.getInputStream(); + StringBuffer sb = new StringBuffer(512); + while ((ch = in.read()) != -1) { + sb.append((char) ch); + } + memoryUsage = sb.toString(); + } catch (IOException e) { + Log.v(TAG, e.toString()); + } + String[] poList = memoryUsage.split("\r|\n|\r\n"); + String memusage = poList[1].concat("\n"); + return memusage; + } + + public static int getMediaServerVsize() { + String memoryUsage = captureMemInfo("mediaserver"); + String[] poList2 = memoryUsage.split("\t|\\s+"); + String vsize = poList2[3]; + int vsizevalue = Integer.parseInt(vsize); + Log.v(TAG, "VSIZE = " + vsizevalue); + return vsizevalue; + } + + public static int getDrmServerVsize() { + String memoryUsage = captureMemInfo("drmserver"); + String[] poList2 = memoryUsage.split("\t|\\s+"); + String vsize = poList2[3]; + int vsizevalue = Integer.parseInt(vsize); + Log.v(TAG, "VSIZE = " + vsizevalue); + return vsizevalue; + } + + // Write the ps mediaserver output to the file + public static void getMediaServerMemoryLog(Writer output, int writeCount, int totalCount) + throws Exception { + String memusage = null; + + if (writeCount == 0) { + mMediaStartMemory = getMediaServerVsize(); + output.write("Start memory : " + mMediaStartMemory + "\n"); + } + memusage = captureMemInfo("mediaserver"); + output.write(memusage); + } + + // Write the ps drmserver output to the file + public static void getDrmServerMemoryLog(Writer output, int writeCount, int totalCount) + throws Exception { + String memusage = null; + + if (writeCount == 0) { + mDrmStartMemory = getDrmServerVsize(); + output.write("Start memory : " + mDrmStartMemory + "\n"); + } + memusage = captureMemInfo("drmserver"); + output.write(memusage); + } + + // Write the ps drmserver output to the file + public static void getDrmServerMemorySummary(Writer output, String tag) throws Exception { + + getTestMemorySummary(output, tag, "drmMem"); + } + + // Write the ps drmserver output to the file + public static void getMediaServerMemorySummary(Writer output, String tag) throws Exception { + + getTestMemorySummary(output, tag, "mediaMem"); + } + + public static void getTestMemorySummary(Writer output, String tag, String type) + throws Exception { + + int endMemory = 0; + int memDiff = 0; + + if (type == "mediaMem") { + endMemory = getMediaServerVsize(); + memDiff = endMemory - mMediaStartMemory; + } else if (type == "drmMem") { + endMemory = getDrmServerVsize(); + memDiff = endMemory - mDrmStartMemory; + } + output.write("End Memory :" + endMemory + "\n"); + if (memDiff < 0) { + memDiff = 0; + } + output.write(tag + " total diff = " + memDiff); + output.write("\n\n"); + } +} diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/VideoEditorExportTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/VideoEditorExportTest.java index 37b1f5492951..74d47661edb2 100755 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/VideoEditorExportTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/VideoEditorExportTest.java @@ -44,6 +44,7 @@ import android.util.Log; import com.android.mediaframeworktest.MediaFrameworkTest; import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.Suppress; import com.android.mediaframeworktest.VideoEditorHelper; public class VideoEditorExportTest extends @@ -701,6 +702,7 @@ public class VideoEditorExportTest extends * * @throws Exception */ + @Suppress @LargeTest public void testExportDuration1Hour() throws Exception { final String videoItemFilename1 = INPUT_FILE_PATH + diff --git a/opengl/libs/EGL/egl.cpp b/opengl/libs/EGL/egl.cpp index f4a16509ed28..e13af1ca24aa 100644 --- a/opengl/libs/EGL/egl.cpp +++ b/opengl/libs/EGL/egl.cpp @@ -2077,14 +2077,15 @@ EGLBoolean eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync) if (!validate_display_context(dpy, ctx)) return EGL_FALSE; + EGLBoolean result = EGL_FALSE; egl_context_t * const c = get_context(ctx); - if (c->cnx->egl.eglDestroySyncKHR) { - return c->cnx->egl.eglDestroySyncKHR( + result = c->cnx->egl.eglDestroySyncKHR( dp->disp[c->impl].dpy, syncObject->sync); + if (result) + _s.terminate(); } - - return EGL_FALSE; + return result; } EGLint eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout) diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 94af40b59b2e..0660a17f3e27 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"تم إنشاء الاتصال بالإنترنت عن طريق البلوتوث."</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"تهيئة طرق الإدخال"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"استخدام لوحة المفاتيح الفعلية"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 40faf7b98487..4c9ecfcb45e0 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth има връзка с тетъринг"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Конфигуриране на въвеждането"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Използване на физ. клав."</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 89b35a07d63f..9a4a360ded29 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth sense fil"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configura mètodes d\'entrada"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utilitza un teclat físic"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 12a84529a5a6..31aa1a71fa71 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Datové připojení Bluetooth se sdílí"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Nakonfigurovat metody vstupu"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Použít fyz. klávesnici"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 624c7c69f641..ddbcf259ab98 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth-tethering anvendt"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurer inputmetoder"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Brug fysisk tastatur"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 97835b94f4a0..c7d95027b084 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth-Tethering aktiv"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Eingabemethoden konfigurieren"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Physische Tastatur"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 799d0cca2dbc..7e15f7fe2068 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Έγινε σύνδεση μέσω Bluetooth"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Διαμόρφωση μεθόδων εισαγωγής"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Χρήση κανονικού πληκτρολ."</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 3d7cd9dd4977..350913a6d7b9 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth tethered"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configure input methods"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Use physical keyboard"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 7b28c3f70733..43d9337a66f7 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth anclado"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configurar métodos de entrada"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Usar teclado físico"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 877b12a2d546..e6c1ce232f85 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth anclado"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configurar métodos de introducción"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utilizar teclado físico"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index e9778a8bd4e7..9e70d5a588af 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"اتصال اینترنتی با بلوتوث تلفن همراه"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"پیکربندی روش های ورودی"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"از صفحه کلید فیزیکی استفاده کنید"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 5590066a2db9..47b32202ec3d 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth yhdistetty"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Määritä syöttötavat"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Käytä fyysistä näppäimistöä"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index 5e578e83b58b..a4a287e86f75 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Connexion Bluetooth partagée"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configurer les modes de saisie"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utiliser clavier physique"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 8e4071dbe15e..680a3e33311a 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth posredno povezan"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfiguriraj načine ulaza"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Rabi fizičku tipkovnicu"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 1fbb2d4775d3..9a103f7ae001 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth megosztva"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Beviteli módok konfigurálása"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Valódi bill. használata"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index b645fba5491c..e7fbbbecbe7b 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth tertambat"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurasikan metode masukan"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Gunakan keyboard fisik"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 2052a3d81fec..b541374a2c58 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth con tethering"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configura metodi di input"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utilizza tastiera fisica"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index f9e638f72410..3194cf5410c7 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth קשור"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"הגדר שיטות קלט"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"השתמש במקלדת הפיזית"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 4a42c09ce930..ac82ed477adb 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetoothテザリング接続"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"入力方法の設定"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"物理キーボードを使用"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index eb2d9b7700d6..2d4786d80013 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"블루투스 테더링됨"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"입력 방법 구성"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"물리적 키보드 사용"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index c4aba8e41ed4..db06596a7fb9 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"„Bluetooth“ susieta"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigūruoti įvesties metodus"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Naudoti fizinę klaviatūrą"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index ac1ed1e783e0..079591e6fc73 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth piesaiste"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurēt ievades metodes"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Izmantot fizisku tastatūru"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index c78eecba0252..b7e7711e8eb5 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth tilknyttet"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurer inndatametoder"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Bruk fysisk tastatur"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 944f1a850a1d..cc9e7a360f2d 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth getetherd"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Invoermethoden configureren"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Fysiek toetsenbord gebruiken"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 71f1b7b0d145..67d9cc1385cb 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth – podłączono"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfiguruj metody wprowadzania"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Używaj klawiatury fizycznej"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 195968277ea7..5ee79a09c3ec 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth ligado"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configurar métodos de entrada"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utilizar teclado físico"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 59684abb9f6d..a91d40697799 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth vinculado"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configurar métodos de entrada"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Usar o teclado físico"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml index ea1926cac49c..b41b9bd86172 100644 --- a/packages/SystemUI/res/values-rm/strings.xml +++ b/packages/SystemUI/res/values-rm/strings.xml @@ -61,15 +61,15 @@ <skip /> <!-- no translation found for status_bar_use_physical_keyboard (3695516942412442936) --> <skip /> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 944b5d14f40e..36628aa95cfb 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Conectat prin tethering prin Bluetooth"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Configuraţi metode de intrare"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Utilizaţi tastat. fizică"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 34b53953977b..13da8a3fd270 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Общий модем доступен через Bluetooth"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Настроить способ ввода"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Использовать физическую клавиатуру"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index 0d918139d4c0..c08eb2164c23 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Zdieľané dátové pripojenie cez Bluetooth"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurovať metódy vstupu"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Použiť fyzickú klávesnicu"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 0e5ad13c704c..d7cb726e3476 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Internetna povezava prek Bluetootha"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Nastavitev načinov vnosa"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Uporabi fizično tipkovn."</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 69b37771e7cd..6e67293f602f 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Веза преко Bluetooth-а"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Конфигуриши методе уноса"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Користи физичку тастатуру"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index fcf752aa9db9..e2905b638710 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Internetdelning via Bluetooth"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Konfigurera inmatningsmetoder"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Använd fysiska tangenter"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 8ebc998abe2e..1e7af69e65bd 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"บลูทูธที่ปล่อยสัญญาณ"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"กำหนดค่าวิธีการป้อนข้อมูล"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"ใช้แป้นพิมพ์จริง"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 8d30859952d6..9fadf73e578d 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Na-tether ang bluetooth"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"I-configure paraan ng input"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Gamitin ang pisikal na keyboard"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 98da3e9d6fa4..7c3585aa1227 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth paylaşımı tamam"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Giriş yöntemlerini yapılandır"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Fiziksel klavyeyi kullan"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 111b50a995c4..a17e59d32027 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Створено прив\'язку Bluetooth"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Налаштувати методи введення"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Викор. реальну клавіатуру"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index ab3120169adf..a994ee08b818 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"Bluetooth được dùng làm điểm truy cập Internet"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"Định cấu hình phương pháp nhập liệu"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"Sử dụng bàn phím vật lý"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index ad88c19b4f0b..baae9e1b0fe8 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"蓝牙已绑定"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"配置输入法"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"使用物理键盘"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index aec5d3fa1b5d..0d83d4410257 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -44,15 +44,15 @@ <string name="bluetooth_tethered" msgid="7094101612161133267">"已透過藍牙進行網際網路共用"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="737483394044014246">"設定輸入方式"</string> <string name="status_bar_use_physical_keyboard" msgid="3695516942412442936">"使用實體鍵盤"</string> - <!-- no translation found for usb_device_permission_prompt (5340926456453429244) --> + <!-- no translation found for usb_device_permission_prompt (3816016361969816903) --> <skip /> - <!-- no translation found for usb_accessory_permission_prompt (3969745913539898765) --> + <!-- no translation found for usb_accessory_permission_prompt (6888598803988889959) --> <skip /> - <!-- no translation found for usb_device_confirm_prompt (2727793581411868504) --> + <!-- no translation found for usb_device_confirm_prompt (5161205258635253206) --> <skip /> - <!-- no translation found for usb_accessory_confirm_prompt (3947430407252730383) --> + <!-- no translation found for usb_accessory_confirm_prompt (3808984931830229888) --> <skip /> - <!-- no translation found for usb_accessory_uri_prompt (3536509438459769165) --> + <!-- no translation found for usb_accessory_uri_prompt (6332150684964235705) --> <skip /> <!-- no translation found for title_usb_accessory (4966265263465181372) --> <skip /> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java index 69585abd5856..a693e606e220 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java @@ -808,7 +808,9 @@ public class NetworkController extends BroadcastReceiver { // the data direction overlay if (mLastDataDirectionOverlayIconId != dataDirectionOverlayIconId) { - Slog.d(TAG, "changing data overlay icon id to " + dataDirectionOverlayIconId); + if (DEBUG) { + Slog.d(TAG, "changing data overlay icon id to " + dataDirectionOverlayIconId); + } mLastDataDirectionOverlayIconId = dataDirectionOverlayIconId; N = mDataDirectionOverlayIconViews.size(); for (int i=0; i<N; i++) { diff --git a/services/input/EventHub.cpp b/services/input/EventHub.cpp index e2da7409de46..853dda42e030 100644 --- a/services/input/EventHub.cpp +++ b/services/input/EventHub.cpp @@ -1074,8 +1074,34 @@ int EventHub::closeDeviceAtIndexLocked(int index) { mDevices.removeAt(index); device->close(); - device->next = mClosingDevices; - mClosingDevices = device; + // Unlink for opening devices list if it is present. + Device* pred = NULL; + bool found = false; + for (Device* entry = mOpeningDevices; entry != NULL; ) { + if (entry == device) { + found = true; + break; + } + pred = entry; + entry = entry->next; + } + if (found) { + // Unlink the device from the opening devices list then delete it. + // We don't need to tell the client that the device was closed because + // it does not even know it was opened in the first place. + LOGI("Device %s was immediately closed after opening.", device->path.string()); + if (pred) { + pred->next = device->next; + } else { + mOpeningDevices = device->next; + } + delete device; + } else { + // Link into closing devices list. + // The device will be deleted later after we have informed the client. + device->next = mClosingDevices; + mClosingDevices = device; + } return 0; } diff --git a/services/java/com/android/server/AppWidgetService.java b/services/java/com/android/server/AppWidgetService.java index f28e2b12ce55..a4a95a0ace90 100644 --- a/services/java/com/android/server/AppWidgetService.java +++ b/services/java/com/android/server/AppWidgetService.java @@ -135,7 +135,7 @@ class AppWidgetService extends IAppWidgetService.Stub IRemoteViewsAdapterConnection.Stub.asInterface(mConnectionCb); try { cb.onServiceConnected(service); - } catch (RemoteException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -147,7 +147,7 @@ class AppWidgetService extends IAppWidgetService.Stub IRemoteViewsAdapterConnection.Stub.asInterface(mConnectionCb); try { cb.onServiceDisconnected(); - } catch (RemoteException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -541,7 +541,7 @@ class AppWidgetService extends IAppWidgetService.Stub IRemoteViewsFactory.Stub.asInterface(service); try { cb.onDestroy(intent); - } catch (RemoteException e) { + } catch (Exception e) { e.printStackTrace(); } mContext.unbindService(this); diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 1297363159ba..cd24478c1044 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -858,11 +858,13 @@ status_t Layer::BufferManager::resize(size_t size, Mutex::Autolock _l(mLock); if (size < mNumBuffers) { - // Move the active texture into slot 0 - BufferData activeBufferData = mBufferData[mActiveBufferIndex]; - mBufferData[mActiveBufferIndex] = mBufferData[0]; - mBufferData[0] = activeBufferData; - mActiveBufferIndex = 0; + // If there is an active texture, move it into slot 0 if needed + if (mActiveBufferIndex > 0) { + BufferData activeBufferData = mBufferData[mActiveBufferIndex]; + mBufferData[mActiveBufferIndex] = mBufferData[0]; + mBufferData[0] = activeBufferData; + mActiveBufferIndex = 0; + } // Free the buffers that are no longer needed. for (size_t i = size; i < mNumBuffers; i++) { |