| Index: tests/PathOpsThreadedCommon.h
|
| ===================================================================
|
| --- tests/PathOpsThreadedCommon.h (revision 0)
|
| +++ tests/PathOpsThreadedCommon.h (revision 0)
|
| @@ -0,0 +1,79 @@
|
| +/*
|
| + * Copyright 2012 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +#ifndef PathOpsThreadedCommon_DEFINED
|
| +#define PathOpsThreadedCommon_DEFINED
|
| +
|
| +#include "SkCountdown.h"
|
| +#include "SkRunnable.h"
|
| +#include "SkTDArray.h"
|
| +#include "SkThreadPool.h"
|
| +
|
| +#define PATH_STR_SIZE 512
|
| +
|
| +class PathOpsThreadedRunnable;
|
| +class skiatest::Reporter;
|
| +
|
| +struct PathOpsThreadState {
|
| + unsigned char fA;
|
| + unsigned char fB;
|
| + unsigned char fC;
|
| + unsigned char fD;
|
| + char* fPathStr;
|
| + skiatest::Reporter* fReporter;
|
| + SkBitmap* fBitmap;
|
| +};
|
| +
|
| +class PathOpsThreadedTestRunner {
|
| +public:
|
| + PathOpsThreadedTestRunner(skiatest::Reporter* reporter, int threadCount)
|
| + : fNumThreads(threadCount)
|
| + , fThreadPool(threadCount)
|
| + , fCountdown(threadCount)
|
| + , fReporter(reporter) {
|
| + }
|
| +
|
| + ~PathOpsThreadedTestRunner();
|
| +
|
| + void render();
|
| +
|
| +public:
|
| + int fNumThreads;
|
| + SkTDArray<PathOpsThreadedRunnable*> fRunnables;
|
| + SkThreadPool fThreadPool;
|
| + SkCountdown fCountdown;
|
| + skiatest::Reporter* fReporter;
|
| +};
|
| +
|
| +class PathOpsThreadedRunnable : public SkRunnable {
|
| +public:
|
| + PathOpsThreadedRunnable(void (*testFun)(PathOpsThreadState*), int a, int b, int c, int d,
|
| + PathOpsThreadedTestRunner* runner) {
|
| + fState.fA = a;
|
| + fState.fB = b;
|
| + fState.fC = c;
|
| + fState.fD = d;
|
| + fState.fReporter = runner->fReporter;
|
| + fTestFun = testFun;
|
| + fDone = &runner->fCountdown;
|
| + }
|
| +
|
| + virtual void run() SK_OVERRIDE {
|
| + SkBitmap bitmap;
|
| + fState.fBitmap = &bitmap;
|
| + char pathStr[PATH_STR_SIZE];
|
| + fState.fPathStr = pathStr;
|
| + (*fTestFun)(&fState);
|
| + fDone->run();
|
| + }
|
| +
|
| +private:
|
| + PathOpsThreadState fState;
|
| + void (*fTestFun)(PathOpsThreadState*);
|
| + SkRunnable* fDone;
|
| +};
|
| +
|
| +#endif
|
|
|