srand() + rand() -> SkRandom

rand() makes these two GMs thread-unsafe.  When run concurrently they can
interfere with each other.  Use SkRandom instead to guarantee independence.

BUG=skia:1590
R=jvanverth@google.com

Review URL: https://codereview.chromium.org/24105003

git-svn-id: http://skia.googlecode.com/svn/trunk@11295 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
mtklein@google.com 2013-09-16 18:19:30 +00:00
parent b6e915da2e
commit cfa7ba7753
2 changed files with 13 additions and 10 deletions

View File

@ -7,6 +7,7 @@
#include "gm.h"
#include "SkBlurImageFilter.h"
#include "SkRandom.h"
#define WIDTH 500
#define HEIGHT 500
@ -33,14 +34,15 @@ protected:
paint.setImageFilter(new SkBlurImageFilter(24.0f, 0.0f))->unref();
canvas->saveLayer(NULL, &paint);
const char* str = "The quick brown fox jumped over the lazy dog.";
srand(1234);
SkRandom rand;
SkPaint textPaint;
textPaint.setAntiAlias(true);
for (int i = 0; i < 25; ++i) {
int x = rand() % WIDTH;
int y = rand() % HEIGHT;
textPaint.setColor(rand() % 0x1000000 | 0xFF000000);
textPaint.setTextSize(SkIntToScalar(rand() % 300));
int x = rand.nextULessThan(WIDTH);
int y = rand.nextULessThan(HEIGHT);
textPaint.setColor(rand.nextBits(24) | 0xFF000000);
textPaint.setTextSize(rand.nextULessThan(300));
canvas->drawText(str, strlen(str), SkIntToScalar(x),
SkIntToScalar(y), textPaint);
}

View File

@ -7,6 +7,7 @@
#include "gm.h"
#include "SkMagnifierImageFilter.h"
#include "SkRandom.h"
#define WIDTH 500
#define HEIGHT 500
@ -44,12 +45,12 @@ protected:
canvas->saveLayer(NULL, &paint);
paint.setAntiAlias(true);
const char* str = "The quick brown fox jumped over the lazy dog.";
srand(1234);
SkRandom rand;
for (int i = 0; i < 25; ++i) {
int x = rand() % WIDTH;
int y = rand() % HEIGHT;
paint.setColor(rand() % 0x1000000 | 0xFF000000);
paint.setTextSize(SkIntToScalar(rand() % 300));
int x = rand.nextULessThan(WIDTH);
int y = rand.nextULessThan(HEIGHT);
paint.setColor(rand.nextBits(24) | 0xFF000000);
paint.setTextSize(rand.nextULessThan(300));
canvas->drawText(str, strlen(str), SkIntToScalar(x),
SkIntToScalar(y), paint);
}