From cfa7ba7753720425bf09e7d6ee2905b36b8e27a3 Mon Sep 17 00:00:00 2001 From: "mtklein@google.com" Date: Mon, 16 Sep 2013 18:19:30 +0000 Subject: [PATCH] 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 --- gm/imageblur.cpp | 12 +++++++----- gm/imagemagnifier.cpp | 11 ++++++----- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/gm/imageblur.cpp b/gm/imageblur.cpp index 406f9ef973..2b2b73fa2b 100644 --- a/gm/imageblur.cpp +++ b/gm/imageblur.cpp @@ -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); } diff --git a/gm/imagemagnifier.cpp b/gm/imagemagnifier.cpp index 0966121d0d..a5f942d5cc 100644 --- a/gm/imagemagnifier.cpp +++ b/gm/imagemagnifier.cpp @@ -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); }