summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/NewCameraActivity.java5
-rw-r--r--src/com/android/camera/NewPhotoModule.java19
-rw-r--r--src/com/android/camera/NewPhotoUI.java10
-rw-r--r--src/com/android/camera/NewPreviewGestures.java11
-rw-r--r--src/com/android/camera/NewVideoModule.java14
-rw-r--r--src/com/android/camera/NewVideoUI.java15
-rw-r--r--src/com/android/camera/Util.java10
-rw-r--r--src/com/android/camera/data/CameraDataAdapter.java2
-rw-r--r--src/com/android/camera/ui/FilmStripView.java5
-rw-r--r--src/com/android/gallery3d/filtershow/FilterShowActivity.java15
-rw-r--r--src/com/android/gallery3d/filtershow/category/Action.java2
-rw-r--r--src/com/android/gallery3d/filtershow/crop/CropLoader.java56
-rw-r--r--src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java6
-rw-r--r--src/com/android/gallery3d/filtershow/state/StateView.java1
-rw-r--r--src/com/android/gallery3d/filtershow/tools/IconFactory.java2
-rw-r--r--src/com/android/photos/drawables/MtpThumbnailDrawable.java61
16 files changed, 129 insertions, 105 deletions
diff --git a/src/com/android/camera/NewCameraActivity.java b/src/com/android/camera/NewCameraActivity.java
index f26e73e5d..59b366419 100644
--- a/src/com/android/camera/NewCameraActivity.java
+++ b/src/com/android/camera/NewCameraActivity.java
@@ -254,6 +254,7 @@ public class NewCameraActivity extends Activity
v.getDrawable().getIntrinsicHeight(),
0, 0));
}
+ setSwipingEnabled(true);
}
@Override
@@ -390,6 +391,10 @@ public class NewCameraActivity extends Activity
public void onShowSwitcherPopup() {
}
+ public void setSwipingEnabled(boolean enable) {
+ mDataAdapter.setCameraPreviewLock(!enable);
+ }
+
// Accessor methods for getting latency times used in performance testing
public long getAutoFocusTime() {
return (mCurrentModule instanceof PhotoModule) ?
diff --git a/src/com/android/camera/NewPhotoModule.java b/src/com/android/camera/NewPhotoModule.java
index 81e9f6d16..55eb0e46f 100644
--- a/src/com/android/camera/NewPhotoModule.java
+++ b/src/com/android/camera/NewPhotoModule.java
@@ -542,6 +542,8 @@ public class NewPhotoModule
mFocusManager.setParameters(mInitialParams);
setupPreview();
+ // reset zoom value index
+ mZoomValue = 0;
openCameraCommon();
if (ApiHelper.HAS_SURFACE_TEXTURE) {
@@ -752,9 +754,13 @@ public class NewPhotoModule
if (mPaused) {
return;
}
+ //TODO: We should show the picture taken rather than frozen preview here
+ if (mIsImageCaptureIntent) {
+ stopPreview();
+ }
if (mSceneMode == Util.SCENE_MODE_HDR) {
mUI.showSwitcher();
- //TODO: mActivity.setSwipingEnabled(true);
+ mUI.setSwipingEnabled(true);
}
mJpegPictureCallbackTime = System.currentTimeMillis();
@@ -1191,7 +1197,7 @@ public class NewPhotoModule
if (mSceneMode == Util.SCENE_MODE_HDR) {
mUI.hideSwitcher();
- //TODO: mActivity.setSwipingEnabled(false);
+ mUI.setSwipingEnabled(false);
}
// If the user wants to do a snapshot while the previous one is still
// in progress, remember the fact and do it after we finish the previous
@@ -1602,10 +1608,11 @@ public class NewPhotoModule
private void updateCameraParametersInitialize() {
// Reset preview frame rate to the maximum because it may be lowered by
// video camera application.
- List<Integer> frameRates = mParameters.getSupportedPreviewFrameRates();
- if (frameRates != null) {
- Integer max = Collections.max(frameRates);
- mParameters.setPreviewFrameRate(max);
+ int[] fpsRange = Util.getMaxPreviewFpsRange(mParameters);
+ if (fpsRange.length > 0) {
+ mParameters.setPreviewFpsRange(
+ fpsRange[Parameters.PREVIEW_FPS_MIN_INDEX],
+ fpsRange[Parameters.PREVIEW_FPS_MAX_INDEX]);
}
mParameters.set(Util.RECORDING_HINT, Util.FALSE);
diff --git a/src/com/android/camera/NewPhotoUI.java b/src/com/android/camera/NewPhotoUI.java
index b9bc4d31a..15b9409ed 100644
--- a/src/com/android/camera/NewPhotoUI.java
+++ b/src/com/android/camera/NewPhotoUI.java
@@ -296,6 +296,7 @@ public class NewPhotoUI implements PieListener,
mGestures = new NewPreviewGestures(mActivity, this, mZoomRenderer, mPieRenderer);
mRenderOverlay.setGestures(mGestures);
}
+ mGestures.setZoomEnabled(params.isZoomSupported());
mGestures.setRenderOverlay(mRenderOverlay);
mRenderOverlay.requestLayout();
@@ -648,8 +649,7 @@ public class NewPhotoUI implements PieListener,
@Override
public void onPieOpened(int centerX, int centerY) {
- //TODO: mActivity.cancelActivityTouchHandling();
- //TODO: mActivity.setSwipingEnabled(false);
+ setSwipingEnabled(false);
dismissPopup();
if (mFaceView != null) {
mFaceView.setBlockDraw(true);
@@ -658,12 +658,16 @@ public class NewPhotoUI implements PieListener,
@Override
public void onPieClosed() {
- //TODO: mActivity.setSwipingEnabled(true);
+ setSwipingEnabled(true);
if (mFaceView != null) {
mFaceView.setBlockDraw(false);
}
}
+ public void setSwipingEnabled(boolean enable) {
+ mActivity.setSwipingEnabled(enable);
+ }
+
public Object getSurfaceTexture() {
synchronized (mLock) {
if (mSurfaceTexture == null) {
diff --git a/src/com/android/camera/NewPreviewGestures.java b/src/com/android/camera/NewPreviewGestures.java
index 39c4be664..339c4b33f 100644
--- a/src/com/android/camera/NewPreviewGestures.java
+++ b/src/com/android/camera/NewPreviewGestures.java
@@ -69,6 +69,7 @@ public class NewPreviewGestures
private int mMode;
private int mSlop;
private int mTapTimeout;
+ private boolean mZoomEnabled;
private boolean mEnabled;
private boolean mZoomOnly;
private int mOrientation;
@@ -148,6 +149,10 @@ public class NewPreviewGestures
mEnabled = enabled;
}
+ public void setZoomEnabled(boolean enable) {
+ mZoomEnabled = enable;
+ }
+
public void setZoomOnly(boolean zoom) {
mZoomOnly = zoom;
}
@@ -178,7 +183,10 @@ public class NewPreviewGestures
mScale.onTouchEvent(m);
if (MotionEvent.ACTION_POINTER_DOWN == m.getActionMasked()) {
mMode = MODE_ZOOM;
- mZoom.onScaleBegin(mScale);
+ if (mZoomEnabled) {
+ // Start showing zoom UI as soon as there is a second finger down
+ mZoom.onScaleBegin(mScale);
+ }
} else if (MotionEvent.ACTION_POINTER_UP == m.getActionMasked()) {
mZoom.onScaleEnd(mScale);
}
@@ -241,6 +249,7 @@ public class NewPreviewGestures
if (mPie == null || !mPie.isOpen()) {
mMode = MODE_ZOOM;
mGestureDetector.onTouchEvent(makeCancelEvent(mCurrent));
+ if (!mZoomEnabled) return false;
return mZoom.onScaleBegin(detector);
}
return false;
diff --git a/src/com/android/camera/NewVideoModule.java b/src/com/android/camera/NewVideoModule.java
index 3649dcbd1..87899a249 100644
--- a/src/com/android/camera/NewVideoModule.java
+++ b/src/com/android/camera/NewVideoModule.java
@@ -1454,7 +1454,7 @@ public class NewVideoModule implements NewCameraModule,
private void startVideoRecording() {
Log.v(TAG, "startVideoRecording");
mUI.enablePreviewThumb(false);
- // TODO: mActivity.setSwipingEnabled(false);
+ mUI.setSwipingEnabled(false);
mActivity.updateStorageSpaceAndHint();
if (mActivity.getStorageSpace() <= Storage.LOW_STORAGE_THRESHOLD) {
@@ -1563,7 +1563,7 @@ public class NewVideoModule implements NewCameraModule,
private boolean stopVideoRecording() {
Log.v(TAG, "stopVideoRecording");
- //TODO: mUI.setSwipingEnabled(true);
+ mUI.setSwipingEnabled(true);
mUI.showSwitcher();
boolean fail = false;
@@ -1772,7 +1772,14 @@ public class NewVideoModule implements NewCameraModule,
@SuppressWarnings("deprecation")
private void setCameraParameters() {
mParameters.setPreviewSize(mDesiredPreviewWidth, mDesiredPreviewHeight);
- mParameters.setPreviewFrameRate(mProfile.videoFrameRate);
+ int[] fpsRange = Util.getMaxPreviewFpsRange(mParameters);
+ if (fpsRange.length > 0) {
+ mParameters.setPreviewFpsRange(
+ fpsRange[Parameters.PREVIEW_FPS_MIN_INDEX],
+ fpsRange[Parameters.PREVIEW_FPS_MAX_INDEX]);
+ } else {
+ mParameters.setPreviewFrameRate(mProfile.videoFrameRate);
+ }
// Set flash mode.
String flashMode;
@@ -2016,6 +2023,7 @@ public class NewVideoModule implements NewCameraModule,
initializeVideoControl();
// From onResume
+ mZoomValue = 0;
mUI.initializeZoom(mParameters);
mUI.setOrientationIndicator(0, false);
diff --git a/src/com/android/camera/NewVideoUI.java b/src/com/android/camera/NewVideoUI.java
index 3abda228e..35676aff5 100644
--- a/src/com/android/camera/NewVideoUI.java
+++ b/src/com/android/camera/NewVideoUI.java
@@ -479,14 +479,17 @@ public class NewVideoUI implements PieRenderer.PieListener,
// PieListener
@Override
public void onPieOpened(int centerX, int centerY) {
- // TODO: mActivity.cancelActivityTouchHandling();
- // mActivity.setSwipingEnabled(false);
+ setSwipingEnabled(false);
dismissPopup(false, true);
}
@Override
public void onPieClosed() {
- // TODO: mActivity.setSwipingEnabled(true);
+ setSwipingEnabled(true);
+ }
+
+ public void setSwipingEnabled(boolean enable) {
+ mActivity.setSwipingEnabled(enable);
}
public void showPreviewBorder(boolean enable) {
@@ -582,7 +585,11 @@ public class NewVideoUI implements PieRenderer.PieListener,
}
public void initializeZoom(Parameters param) {
- if (param == null || !param.isZoomSupported()) return;
+ if (param == null || !param.isZoomSupported()) {
+ mGestures.setZoomEnabled(false);
+ return;
+ }
+ mGestures.setZoomEnabled(true);
mZoomMax = param.getMaxZoom();
mZoomRatios = param.getZoomRatios();
// Currently we use immediate zoom for fast zooming to get better UX and
diff --git a/src/com/android/camera/Util.java b/src/com/android/camera/Util.java
index 6c3b3640b..3a0b61967 100644
--- a/src/com/android/camera/Util.java
+++ b/src/com/android/camera/Util.java
@@ -746,6 +746,16 @@ public class Util {
}
}
+
+ public static int[] getMaxPreviewFpsRange(Parameters params) {
+ List<int[]> frameRates = params.getSupportedPreviewFpsRange();
+ if (frameRates != null && frameRates.size() > 0) {
+ // The list is sorted. Return the last element.
+ return frameRates.get(frameRates.size() - 1);
+ }
+ return new int[0];
+ }
+
private static class ImageFileNamer {
private SimpleDateFormat mFormat;
diff --git a/src/com/android/camera/data/CameraDataAdapter.java b/src/com/android/camera/data/CameraDataAdapter.java
index fbe9af61f..609e812fc 100644
--- a/src/com/android/camera/data/CameraDataAdapter.java
+++ b/src/com/android/camera/data/CameraDataAdapter.java
@@ -128,7 +128,7 @@ public class CameraDataAdapter implements FilmStripView.DataAdapter {
public boolean canSwipeInFullScreen(int id) {
if (mImages.get(id).getType()
== ImageData.TYPE_CAMERA_PREVIEW) {
- return mCameraPreviewLocked;
+ return !mCameraPreviewLocked;
}
return false;
}
diff --git a/src/com/android/camera/ui/FilmStripView.java b/src/com/android/camera/ui/FilmStripView.java
index d8ab27d1f..fb8fd2e31 100644
--- a/src/com/android/camera/ui/FilmStripView.java
+++ b/src/com/android/camera/ui/FilmStripView.java
@@ -769,6 +769,11 @@ public class FilmStripView extends ViewGroup {
if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
mCheckToIntercept = true;
mDown = MotionEvent.obtain(ev);
+ ViewInfo viewInfo = mViewInfo[mCurrentInfo];
+ // Do not intercept touch if swipe is not enabled
+ if (viewInfo != null && !mDataAdapter.canSwipeInFullScreen(viewInfo.getID())) {
+ mCheckToIntercept = false;
+ }
return false;
} else if (ev.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN) {
// Do not intercept touch once child is in zoom mode
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
index 1cef27170..2d745968b 100644
--- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java
+++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
@@ -31,16 +31,19 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.util.DisplayMetrics;
import android.util.TypedValue;
+import android.util.Log;
import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
+import android.view.ViewPropertyAnimator;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
@@ -209,7 +212,10 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
View container = mainPanel.getView().findViewById(R.id.category_panel_container);
View bottom = mainPanel.getView().findViewById(R.id.bottom_panel);
int panelHeight = container.getHeight() + bottom.getHeight();
- mainPanel.getView().animate().translationY(panelHeight).withEndAction(showEditor).start();
+ ViewPropertyAnimator anim = mainPanel.getView().animate();
+ anim.translationY(panelHeight).start();
+ final Handler handler = new Handler();
+ handler.postDelayed(showEditor, anim.getDuration());
} else {
showEditor.run();
}
@@ -506,6 +512,10 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
cannotLoadImage();
}
+ if (null == CachingPipeline.getRenderScriptContext()){
+ Log.v(LOGTAG,"RenderScript context destroyed during load");
+ return;
+ }
final View loading = findViewById(R.id.loading);
loading.setVisibility(View.GONE);
final View imageShow = findViewById(R.id.imageShow);
@@ -973,6 +983,9 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
public void done() {
hideSavingProgress();
+ if (mLoadBitmapTask != null) {
+ mLoadBitmapTask.cancel(false);
+ }
finish();
}
diff --git a/src/com/android/gallery3d/filtershow/category/Action.java b/src/com/android/gallery3d/filtershow/category/Action.java
index 506b2bf0f..b46147961 100644
--- a/src/com/android/gallery3d/filtershow/category/Action.java
+++ b/src/com/android/gallery3d/filtershow/category/Action.java
@@ -134,7 +134,7 @@ public class Action implements RenderingRequestCaller {
m.mapRect(image);
m.setRectToRect(image, frame, Matrix.ScaleToFit.FILL);
Canvas canvas = new Canvas(destination);
- canvas.drawBitmap(source, m, new Paint());
+ canvas.drawBitmap(source, m, new Paint(Paint.FILTER_BITMAP_FLAG));
}
@Override
diff --git a/src/com/android/gallery3d/filtershow/crop/CropLoader.java b/src/com/android/gallery3d/filtershow/crop/CropLoader.java
index fc461f5d0..53a9ebc14 100644
--- a/src/com/android/gallery3d/filtershow/crop/CropLoader.java
+++ b/src/com/android/gallery3d/filtershow/crop/CropLoader.java
@@ -30,6 +30,7 @@ import android.provider.MediaStore;
import android.provider.MediaStore.Images;
import android.provider.MediaStore.Images.ImageColumns;
import android.util.Log;
+import android.webkit.MimeTypeMap;
import com.android.gallery3d.common.Utils;
import com.android.gallery3d.exif.ExifInterface;
@@ -64,39 +65,45 @@ public abstract class CropLoader {
if (uri == null || context == null) {
throw new IllegalArgumentException("bad argument to getScaledBitmap");
}
- if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) {
- String mimeType = context.getContentResolver().getType(uri);
- if (mimeType != JPEG_MIME_TYPE) {
- return 0;
- }
- String path = uri.getPath();
- int orientation = 0;
- ExifInterface exif = new ExifInterface();
- try {
- exif.readExif(path);
- orientation = ExifInterface.getRotationForOrientationValue(
- exif.getTagIntValue(ExifInterface.TAG_ORIENTATION).shortValue());
- } catch (IOException e) {
- Log.w(LOGTAG, "Failed to read EXIF orientation", e);
- }
- return orientation;
- }
+
+ // First try to find orientation data in Gallery's ContentProvider.
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(uri,
new String[] { MediaStore.Images.ImageColumns.ORIENTATION },
null, null, null);
- if (cursor.moveToNext()) {
+ if (cursor != null && cursor.moveToNext()) {
int ori = cursor.getInt(0);
return (ori < 0) ? 0 : ori;
}
} catch (SQLiteException e) {
- return 0;
+ // Do nothing
} catch (IllegalArgumentException e) {
- return 0;
+ // Do nothing
} 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 0;
+ }
+ String path = uri.getPath();
+ int orientation = 0;
+ ExifInterface exif = new ExifInterface();
+ try {
+ exif.readExif(path);
+ Integer tagval = exif.getTagIntValue(ExifInterface.TAG_ORIENTATION);
+ if (tagval != null) {
+ orientation = ExifInterface.getRotationForOrientationValue(tagval.shortValue());
+ }
+ } catch (IOException e) {
+ Log.w(LOGTAG, "Failed to read EXIF orientation", e);
+ }
+ return orientation;
+ }
return 0;
}
@@ -252,6 +259,15 @@ public abstract class CropLoader {
return dir[0];
}
+ private static String getMimeType(Uri src) {
+ String postfix = MimeTypeMap.getFileExtensionFromUrl(src.toString());
+ String ret = null;
+ if (postfix != null) {
+ ret = MimeTypeMap.getSingleton().getMimeTypeFromExtension(postfix);
+ }
+ return ret;
+ }
+
public static Uri insertContent(Context context, Uri sourceUri, File file, String saveFileName,
long time) {
time /= 1000;
diff --git a/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java
index 701fabba7..c95a15a99 100644
--- a/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java
+++ b/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java
@@ -24,7 +24,7 @@ public class FilterRepresentation implements Cloneable {
private static final boolean DEBUG = false;
private String mName;
private int mPriority = TYPE_NORMAL;
- private Class mFilterClass;
+ private Class<?> mFilterClass;
private boolean mSupportsPartialRendering = false;
private int mTextId = 0;
private int mEditorId = BasicEditor.ID;
@@ -157,11 +157,11 @@ public class FilterRepresentation implements Cloneable {
return false;
}
- public Class getFilterClass() {
+ public Class<?> getFilterClass() {
return mFilterClass;
}
- public void setFilterClass(Class filterClass) {
+ public void setFilterClass(Class<?> filterClass) {
mFilterClass = filterClass;
}
diff --git a/src/com/android/gallery3d/filtershow/state/StateView.java b/src/com/android/gallery3d/filtershow/state/StateView.java
index 9353a430a..73d57846a 100644
--- a/src/com/android/gallery3d/filtershow/state/StateView.java
+++ b/src/com/android/gallery3d/filtershow/state/StateView.java
@@ -78,6 +78,7 @@ public class StateView extends View {
mTextColor = res.getColor(R.color.filtershow_stateview_text);
mSelectedBackgroundColor = res.getColor(R.color.filtershow_stateview_selected_background);
mSelectedTextColor = res.getColor(R.color.filtershow_stateview_selected_text);
+ mTextSize = res.getDimensionPixelSize(R.dimen.state_panel_text_size);
}
public String getText() {
diff --git a/src/com/android/gallery3d/filtershow/tools/IconFactory.java b/src/com/android/gallery3d/filtershow/tools/IconFactory.java
index ccc49e13d..9e39f27fc 100644
--- a/src/com/android/gallery3d/filtershow/tools/IconFactory.java
+++ b/src/com/android/gallery3d/filtershow/tools/IconFactory.java
@@ -103,6 +103,6 @@ public class IconFactory {
rec.roundOut(srcRect);
}
- canvas.drawBitmap(sourceImage, srcRect, destRect, new Paint());
+ canvas.drawBitmap(sourceImage, srcRect, destRect, new Paint(Paint.FILTER_BITMAP_FLAG));
}
}
diff --git a/src/com/android/photos/drawables/MtpThumbnailDrawable.java b/src/com/android/photos/drawables/MtpThumbnailDrawable.java
deleted file mode 100644
index e35e06943..000000000
--- a/src/com/android/photos/drawables/MtpThumbnailDrawable.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.photos.drawables;
-
-import android.mtp.MtpDevice;
-import android.mtp.MtpObjectInfo;
-
-import com.android.gallery3d.ingest.MtpDeviceIndex;
-
-import java.io.InputStream;
-
-public class MtpThumbnailDrawable extends AutoThumbnailDrawable<MtpObjectInfo> {
- public void setImage(MtpObjectInfo data) {
- if (data == null) {
- setImage(null, 0, 0);
- } else {
- setImage(data, data.getImagePixWidth(), data.getImagePixHeight());
- }
- }
-
- @Override
- protected byte[] getPreferredImageBytes(MtpObjectInfo data) {
- if (data == null) {
- return null;
- }
- MtpDevice device = MtpDeviceIndex.getInstance().getDevice();
- if (device != null) {
- return device.getThumbnail(data.getObjectHandle());
- } else {
- return null;
- }
- }
-
- @Override
- protected InputStream getFallbackImageStream(MtpObjectInfo data) {
- // No fallback
- return null;
- }
-
- @Override
- protected boolean dataChangedLocked(MtpObjectInfo data) {
- // We only fetch the MtpObjectInfo once when creating
- // the index so checking the reference is enough
- return mData == data;
- }
-
-}