2ac6793efc
Reason for revert: Breaks Chrome roll. obj/skia/ext/skia_chrome.skia_memory_dump_provider.o does not have -I include/private on its include path, but transitively includes SkMessageBus.h. Original issue's description: > Port uses of SkLazyPtr to SkOncePtr. > > This gives SkOncePtr a non-trivial destructor that uses std::default_delete > by default. This is overrideable, as seen in SkColorTable. > > SK_DECLARE_STATIC_ONCE_PTR still just leaves its pointers hanging at EOP. > > BUG=skia: > > No public API changes. > TBR=reed@google.com > > Committed: https://skia.googlesource.com/skia/+/a1254acdb344174e761f5061c820559dab64a74c TBR=herb@google.com,mtklein@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1334523002
51 lines
1.1 KiB
C++
51 lines
1.1 KiB
C++
/*
|
|
* Copyright 2015 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#include "Test.h"
|
|
#include "SkOncePtr.h"
|
|
#include "SkTaskGroup.h"
|
|
|
|
DEF_TEST(OncePtr, r) {
|
|
SkOncePtr<int> once;
|
|
|
|
static SkAtomic<int> calls(0);
|
|
auto create = [&] {
|
|
calls.fetch_add(1);
|
|
return new int(5);
|
|
};
|
|
|
|
SkAtomic<int> force_a_race(sk_num_cores());
|
|
|
|
sk_parallel_for(sk_num_cores()*4, [&](size_t) {
|
|
force_a_race.fetch_add(-1);
|
|
while (force_a_race.load() > 0);
|
|
|
|
int* n = once.get(create);
|
|
REPORTER_ASSERT(r, *n == 5);
|
|
});
|
|
REPORTER_ASSERT(r, calls.load() == 1);
|
|
|
|
delete (int*)once;
|
|
}
|
|
|
|
/* TODO(mtklein): next CL
|
|
|
|
SK_DECLARE_STATIC_ONCE(once_noptr);
|
|
DEF_TEST(OnceNoPtr, r) {
|
|
static SkAtomic<int> calls(0);
|
|
|
|
SkAtomic<int> force_a_race(sk_num_cores());
|
|
sk_parallel_for(sk_num_cores()*4, [&](size_t) {
|
|
force_a_race.fetch_add(-1);
|
|
while (force_a_race.load() > 0);
|
|
|
|
SkOnce(&once_noptr, [&] { calls.fetch_add(1); });
|
|
});
|
|
REPORTER_ASSERT(r, calls.load() == 1);
|
|
}
|
|
*/
|