am 062bd465: Merge "jni: fix C99 inline linking"
* commit '062bd465cd25806ea37200639c6b1200a62db9d4':
jni: fix C99 inline linking
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 8f48edf..59da7ea 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -164,7 +164,6 @@
<!-- This activity acts as a trampoline to the new Gallery activity,
so that existing shortcuts are preserved. -->
<activity android:name="com.android.gallery3d.app.Gallery"
- android:excludeFromRecents="true"
android:theme="@style/android:Theme.NoDisplay">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
diff --git a/res/drawable-hdpi-v19/overscroll_edge.png b/res/drawable-hdpi-v19/overscroll_edge.png
new file mode 100644
index 0000000..1952e0e
--- /dev/null
+++ b/res/drawable-hdpi-v19/overscroll_edge.png
Binary files differ
diff --git a/res/drawable-hdpi-v19/overscroll_glow.png b/res/drawable-hdpi-v19/overscroll_glow.png
new file mode 100644
index 0000000..45c0135
--- /dev/null
+++ b/res/drawable-hdpi-v19/overscroll_glow.png
Binary files differ
diff --git a/res/drawable-mdpi-v19/overscroll_edge.png b/res/drawable-mdpi-v19/overscroll_edge.png
new file mode 100644
index 0000000..baf2d0c
--- /dev/null
+++ b/res/drawable-mdpi-v19/overscroll_edge.png
Binary files differ
diff --git a/res/drawable-mdpi-v19/overscroll_glow.png b/res/drawable-mdpi-v19/overscroll_glow.png
new file mode 100644
index 0000000..c6cddd4
--- /dev/null
+++ b/res/drawable-mdpi-v19/overscroll_glow.png
Binary files differ
diff --git a/res/drawable-xhdpi-v19/overscroll_edge.png b/res/drawable-xhdpi-v19/overscroll_edge.png
new file mode 100644
index 0000000..b5e6e61
--- /dev/null
+++ b/res/drawable-xhdpi-v19/overscroll_edge.png
Binary files differ
diff --git a/res/drawable-xhdpi-v19/overscroll_glow.png b/res/drawable-xhdpi-v19/overscroll_glow.png
new file mode 100644
index 0000000..779c3a5
--- /dev/null
+++ b/res/drawable-xhdpi-v19/overscroll_glow.png
Binary files differ
diff --git a/res/drawable-xxhdpi-v19/overscroll_edge.png b/res/drawable-xxhdpi-v19/overscroll_edge.png
new file mode 100644
index 0000000..734bfa7
--- /dev/null
+++ b/res/drawable-xxhdpi-v19/overscroll_edge.png
Binary files differ
diff --git a/res/drawable-xxhdpi-v19/overscroll_glow.png b/res/drawable-xxhdpi-v19/overscroll_glow.png
new file mode 100644
index 0000000..dc1f279
--- /dev/null
+++ b/res/drawable-xxhdpi-v19/overscroll_glow.png
Binary files differ
diff --git a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java
index 69edd60..52c296c 100644
--- a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java
+++ b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java
@@ -129,36 +129,52 @@
} finally {
Utils.closeSilently(cursor);
}
-
- // Fall back to checking EXIF tags in file.
- if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) {
- String mimeType = getMimeType(uri);
- if (!JPEG_MIME_TYPE.equals(mimeType)) {
- return ORI_NORMAL;
- }
- String path = uri.getPath();
- ExifInterface exif = new ExifInterface();
- try {
+ ExifInterface exif = new ExifInterface();
+ InputStream is = null;
+ // Fall back to checking EXIF tags in file or input stream.
+ try {
+ if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) {
+ String mimeType = getMimeType(uri);
+ if (!JPEG_MIME_TYPE.equals(mimeType)) {
+ return ORI_NORMAL;
+ }
+ String path = uri.getPath();
exif.readExif(path);
- Integer tagval = exif.getTagIntValue(ExifInterface.TAG_ORIENTATION);
- if (tagval != null) {
- int orientation = tagval;
- switch(orientation) {
- case ORI_NORMAL:
- case ORI_ROTATE_90:
- case ORI_ROTATE_180:
- case ORI_ROTATE_270:
- case ORI_FLIP_HOR:
- case ORI_FLIP_VERT:
- case ORI_TRANSPOSE:
- case ORI_TRANSVERSE:
- return orientation;
- default:
- return ORI_NORMAL;
- }
+ } else {
+ is = context.getContentResolver().openInputStream(uri);
+ exif.readExif(is);
+ }
+ return parseExif(exif);
+ } catch (IOException e) {
+ Log.w(LOGTAG, "Failed to read EXIF orientation", e);
+ } finally {
+ try {
+ if (is != null) {
+ is.close();
}
} catch (IOException e) {
- Log.w(LOGTAG, "Failed to read EXIF orientation", e);
+ Log.w(LOGTAG, "Failed to close InputStream", e);
+ }
+ }
+ return ORI_NORMAL;
+ }
+
+ private static int parseExif(ExifInterface exif){
+ Integer tagval = exif.getTagIntValue(ExifInterface.TAG_ORIENTATION);
+ if (tagval != null) {
+ int orientation = tagval;
+ switch(orientation) {
+ case ORI_NORMAL:
+ case ORI_ROTATE_90:
+ case ORI_ROTATE_180:
+ case ORI_ROTATE_270:
+ case ORI_FLIP_HOR:
+ case ORI_FLIP_VERT:
+ case ORI_TRANSPOSE:
+ case ORI_TRANSVERSE:
+ return orientation;
+ default:
+ return ORI_NORMAL;
}
}
return ORI_NORMAL;
diff --git a/src/com/android/gallery3d/filtershow/category/MainPanel.java b/src/com/android/gallery3d/filtershow/category/MainPanel.java
index eb1ce2b..082bf14 100644
--- a/src/com/android/gallery3d/filtershow/category/MainPanel.java
+++ b/src/com/android/gallery3d/filtershow/category/MainPanel.java
@@ -27,6 +27,7 @@
import com.android.gallery3d.R;
import com.android.gallery3d.filtershow.FilterShowActivity;
+import com.android.gallery3d.filtershow.imageshow.MasterImage;
import com.android.gallery3d.filtershow.state.StatePanel;
public class MainPanel extends Fragment {
@@ -176,6 +177,9 @@
if (mCurrentSelected == GEOMETRY) {
return;
}
+ if (MasterImage.getImage().hasTinyPlanet()) {
+ return;
+ }
boolean fromRight = isRightAnimation(GEOMETRY);
selection(mCurrentSelected, false);
CategoryPanel categoryPanel = new CategoryPanel();
diff --git a/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java b/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java
index 64b4974..8350ff3 100644
--- a/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java
+++ b/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java
@@ -263,7 +263,7 @@
"LUT3D_INSTANT",
"LUT3D_WASHOUT",
"LUT3D_BLUECRUSH",
- "LUT3D_WASHOUT",
+ "LUT3D_WASHOUT_COLOR",
"LUT3D_XPROCESS"
};
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java b/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java
index 4b03991..4e53f82 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java
@@ -265,6 +265,7 @@
mImageBounds.set(0, 0, bitmap.getWidth(), bitmap.getHeight());
// If display matrix doesn't exist, create it and its dependencies
if (mDisplayCropMatrix == null || mDisplayMatrix == null || mDisplayMatrixInverse == null) {
+ mCropObj.unsetAspectRatio();
mDisplayMatrix = GeometryMathUtils.getFullGeometryToScreenMatrix(mGeometry,
bitmap.getWidth(), bitmap.getHeight(), canvas.getWidth(), canvas.getHeight());
float straighten = mGeometry.straighten;
diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
index 3513ded..f6b97f1 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
@@ -829,4 +829,8 @@
public BitmapCache getBitmapCache() {
return mBitmapCache;
}
+
+ public boolean hasTinyPlanet() {
+ return mPreset.contains(FilterRepresentation.TYPE_TINYPLANET);
+ }
}
diff --git a/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java b/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java
index 4322ed7..4765a59 100644
--- a/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java
+++ b/src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java
@@ -394,7 +394,7 @@
break;
}
}
- if (!replaced) {
+ if (!replaced && !isNoneFxFilter(representation)) {
mFilters.add(0, representation);
}
} else {
diff --git a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
index b5b636e..e5736d4 100644
--- a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
+++ b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
@@ -288,7 +288,7 @@
if (mNeedsAlive) {
// If the app has been restarted while we were saving...
mFiltershowActivity.updateUIAfterServiceStarted();
- } else if (mFiltershowActivity.isSimpleEditAction()) {
+ } else if (exit || mFiltershowActivity.isSimpleEditAction()) {
// terminate now
mFiltershowActivity.completeSaveImage(result);
}
diff --git a/src/com/android/gallery3d/filtershow/tools/SaveImage.java b/src/com/android/gallery3d/filtershow/tools/SaveImage.java
index 354081e..c3cdea8 100644
--- a/src/com/android/gallery3d/filtershow/tools/SaveImage.java
+++ b/src/com/android/gallery3d/filtershow/tools/SaveImage.java
@@ -402,6 +402,10 @@
// if we have a valid size
int w = (int) (bitmap.getWidth() * sizeFactor);
int h = (int) (bitmap.getHeight() * sizeFactor);
+ if (w == 0 || h == 0) {
+ w = 1;
+ h = 1;
+ }
bitmap = Bitmap.createScaledBitmap(bitmap, w, h, true);
}
updateProgress();
diff --git a/src/com/android/gallery3d/filtershow/ui/ExportDialog.java b/src/com/android/gallery3d/filtershow/ui/ExportDialog.java
index f6a84ce..b42c9f3 100644
--- a/src/com/android/gallery3d/filtershow/ui/ExportDialog.java
+++ b/src/com/android/gallery3d/filtershow/ui/ExportDialog.java
@@ -202,8 +202,8 @@
return;
}
mEditing = true;
- int width = 0;
- int height = 0;
+ int width = 1;
+ int height = 1;
if (text.getId() == R.id.editableWidth) {
if (mWidthText.getText() != null) {
String value = String.valueOf(mWidthText.getText());
@@ -213,6 +213,10 @@
width = mOriginalBounds.width();
mWidthText.setText("" + width);
}
+ if (width <= 0) {
+ width = (int) Math.ceil(mRatio);
+ mWidthText.setText("" + width);
+ }
height = (int) (width / mRatio);
}
mHeightText.setText("" + height);
@@ -226,6 +230,10 @@
height = mOriginalBounds.height();
mHeightText.setText("" + height);
}
+ if (height <= 0) {
+ height = 1;
+ mHeightText.setText("" + height);
+ }
width = (int) (height * mRatio);
}
mWidthText.setText("" + width);
diff --git a/src/com/android/gallery3d/util/GalleryUtils.java b/src/com/android/gallery3d/util/GalleryUtils.java
index 9a78fcd..8fb926c 100644
--- a/src/com/android/gallery3d/util/GalleryUtils.java
+++ b/src/com/android/gallery3d/util/GalleryUtils.java
@@ -43,6 +43,7 @@
import com.android.gallery3d.data.DataManager;
import com.android.gallery3d.data.MediaItem;
import com.android.gallery3d.ui.TiledScreenNail;
+import com.android.gallery3d.util.IntentHelper;
import com.android.gallery3d.util.ThreadPool.CancelListener;
import com.android.gallery3d.util.ThreadPool.JobContext;
@@ -235,12 +236,10 @@
public static boolean isCameraAvailable(Context context) {
if (sCameraAvailableInitialized) return sCameraAvailable;
PackageManager pm = context.getPackageManager();
- ComponentName name = new ComponentName(context, CAMERA_LAUNCHER_NAME);
- int state = pm.getComponentEnabledSetting(name);
+ Intent cameraIntent = IntentHelper.getCameraIntent(context);
+ List<ResolveInfo> apps = pm.queryIntentActivities(cameraIntent, 0);
sCameraAvailableInitialized = true;
- sCameraAvailable =
- (state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT)
- || (state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
+ sCameraAvailable = !apps.isEmpty();
return sCameraAvailable;
}
@@ -248,7 +247,13 @@
Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intent);
+ try {
+ context.startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+ // This will only occur if Camera was disabled while Gallery is open
+ // since we cache our availability check. Just abort the attempt.
+ Log.e(TAG, "Camera activity previously detected but cannot be found", e);
+ }
}
public static void startGalleryActivity(Context context) {
diff --git a/src_pd/com/android/gallery3d/util/IntentHelper.java b/src_pd/com/android/gallery3d/util/IntentHelper.java
index 13f69eb..8aebfc1 100644
--- a/src_pd/com/android/gallery3d/util/IntentHelper.java
+++ b/src_pd/com/android/gallery3d/util/IntentHelper.java
@@ -22,7 +22,7 @@
public static Intent getCameraIntent(Context context) {
return new Intent(Intent.ACTION_MAIN)
- .setClassName("com.android.camera2", "com.android.camera.CameraActivity");
+ .setClassName("com.android.camera2", "com.android.camera.CameraLauncher");
}
public static Intent getGalleryIntent(Context context) {