Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Unified Diff: tools/skpdiff/SkImageDiffer.h

Issue 60833002: fix multithread related crashes in skpdiff (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/skpdiff/SkImageDiffer.h
diff --git a/tools/skpdiff/SkImageDiffer.h b/tools/skpdiff/SkImageDiffer.h
index 2c1fa7e78853cdb3b15f7f97c79ce1719db45632..df736d90154f9dab56fcaa506e678be3caa7d262 100644
--- a/tools/skpdiff/SkImageDiffer.h
+++ b/tools/skpdiff/SkImageDiffer.h
@@ -8,8 +8,7 @@
#ifndef SkImageDiffer_DEFINED
#define SkImageDiffer_DEFINED
-class SkBitmap;
-struct SkIPoint;
+#include "SkBitmap.h"
/**
* Encapsulates an image difference metric algorithm that can be potentially run asynchronously.
@@ -22,6 +21,13 @@ public:
static const double RESULT_CORRECT;
static const double RESULT_INCORRECT;
+ struct Result {
+ double result;
+ int poiCount;
+ SkBitmap poiAlphaMask; // optional
+ double timeElapsed; // optional
+ };
+
/**
* Gets a unique and descriptive name of this differ
* @return A statically allocated null terminated string that is the name of this differ
@@ -46,64 +52,12 @@ public:
virtual bool enablePOIAlphaMask() { return false; }
/**
- * Wraps a call to queueDiff by loading the given filenames into SkBitmaps
- * @param baseline The file path of the baseline image
- * @param test The file path of the test image
- * @return The results of queueDiff with the loaded bitmaps
- */
- int queueDiffOfFile(const char baseline[], const char test[]);
-
- /**
- * Queues a diff on a pair of bitmaps to be done at some future time.
+ * diff on a pair of bitmaps.
* @param baseline The correct bitmap
* @param test The bitmap whose difference is being tested
- * @return An non-negative diff ID on success, a negative integer on failure.
- */
- virtual int queueDiff(SkBitmap* baseline, SkBitmap* test) = 0;
-
- /**
- * Gets whether a queued diff of the given id has finished
- * @param id The id of the queued diff to query
- * @return True if the queued diff is finished and has results, false otherwise
- */
- virtual bool isFinished(int id) = 0;
-
- /**
- * Deletes memory associated with a diff and its results. This may block execution until the
- * diff is finished,
- * @param id The id of the diff to query
- */
- virtual void deleteDiff(int id) = 0;
-
- /**
- * Gets the results of the queued diff of the given id. The results are only meaningful after
- * the queued diff has finished.
- * @param id The id of the queued diff to query
- */
- virtual double getResult(int id) = 0;
-
- /**
- * Gets the number of points of interest for the diff of the given id. The results are only
- * meaningful after the queued diff has finished.
- * @param id The id of the queued diff to query
+ * @return true on success, and false in the case of failure
*/
- virtual int getPointsOfInterestCount(int id) = 0;
-
- /**
- * Gets an array of the points of interest for the diff of the given id. The results are only
- * meaningful after the queued diff has finished.
- * @param id The id of the queued diff to query
- */
- virtual SkIPoint* getPointsOfInterest(int id) = 0;
-
- /*
- * Gets a bitmap containing an alpha mask containing transparent pixels at the points of
- * interest for the diff of the given id. The results are only meaningful after the
- * queued diff has finished.
- * @param id The id of the queued diff to query
- */
- virtual SkBitmap* getPointsOfInterestAlphaMask(int id) { return NULL; }
-
+ virtual bool diff(SkBitmap* baseline, SkBitmap* test, Result* result) = 0;
protected:
bool fIsGood;

Powered by Google App Engine
This is Rietveld 408576698