diff options
author | mpearson <mpearson@chromium.org> | 2015-10-15 21:34:12 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-10-16 04:34:55 +0000 |
commit | 1b8d59763b4266783794a950eee388ddc110ada6 (patch) | |
tree | 1a8602153c7faa87fe18f3d85ac9073f9b9e33f9 /cc/surfaces/surface.cc | |
parent | 397b1a31c02523b6a30b52f863a8f4ecca91a1f7 (diff) | |
download | chromium_src-1b8d59763b4266783794a950eee388ddc110ada6.zip chromium_src-1b8d59763b4266783794a950eee388ddc110ada6.tar.gz chromium_src-1b8d59763b4266783794a950eee388ddc110ada6.tar.bz2 |
Revert of Add mechanism to signal DelegatedFrameHost that a surface is about to draw. (patchset #7 id:120001 of https://codereview.chromium.org/1365793002/ )
Reason for revert:
Causing memory failures on SurfaceAggregatorValidSurfaceTest.CopyRequest in cc_unittests on
http://build.chromium.org/p/chromium.memory.fyi/builders/Linux%20MSan%20Tests/builds/10514
and
http://build.chromium.org/p/chromium.memory.fyi/builders/Linux%20ChromeOS%20MSan%20Tests/builds/4653
[ RUN ] SurfaceAggregatorValidSurfaceTest.CopyRequest
==31905==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x7fccb3920f7e in cc::Surface::RequestCopyOfOutput(scoped_ptr\u003Ccc::CopyOutputRequest, base::DefaultDeleter\u003Ccc::CopyOutputRequest> >) cc/surfaces/surface.cc:106:15
#1 0x7fccb3942ec9 in cc::SurfaceFactory::RequestCopyOfSurface(cc::SurfaceId, scoped_ptr\u003Ccc::CopyOutputRequest, base::DefaultDeleter\u003Ccc::CopyOutputRequest> >) cc/surfaces/surface_factory.cc:75:3
#2 0x7fccb31ce931 in cc::(anonymous namespace)::SurfaceAggregatorValidSurfaceTest_CopyRequest_Test::TestBody() cc/surfaces/surface_aggregator_unittest.cc:285:3
#3 0x7fccb33160d2 in HandleExceptionsInMethodIfSupported\u003Ctesting::Test, void> testing/gtest/src/gtest.cc:2458:12
#4 0x7fccb33160d2 in testing::Test::Run() testing/gtest/src/gtest.cc:2474:0
#5 0x7fccb331972c in testing::TestInfo::Run() testing/gtest/src/gtest.cc:2656:5
#6 0x7fccb331b0a2 in testing::TestCase::Run() testing/gtest/src/gtest.cc:2774:5
#7 0x7fccb333948b in testing::internal::UnitTestImpl::RunAllTests() testing/gtest/src/gtest.cc:4647:11
#8 0x7fccb3338468 in HandleExceptionsInMethodIfSupported\u003Ctesting::internal::UnitTestImpl, bool> testing/gtest/src/gtest.cc:2458:12
#9 0x7fccb3338468 in testing::UnitTest::Run() testing/gtest/src/gtest.cc:4255:0
#10 0x7fccb32867da in RUN_ALL_TESTS testing/gtest/include/gtest/gtest.h:2237:10
#11 0x7fccb32867da in base::TestSuite::Run() base/test/test_suite.cc:230:0
#12 0x7fccb327388e in Run base/callback.h:396:12
#13 0x7fccb327388e in base::(anonymous namespace)::LaunchUnitTestsInternal(base::Callback\u003Cint ()> const&, int, bool, base::Callback\u003Cvoid ()> const&) base/test/launcher/unit_test_launcher.cc:187:0
#14 0x7fccb32730de in base::LaunchUnitTests(int, char**, base::Callback\u003Cint ()> const&) base/test/launcher/unit_test_launcher.cc:426:10
#15 0x7fccb0ba0c15 in main cc/test/run_all_unittests.cc:12:10
#16 0x7fccaa41076c in __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226:0
#17 0x7fccb0b41ca8 in _start ??:0:0
Uninitialized value was created by a heap allocation
#0 0x7fccb0b9fd92 in operator new(unsigned long) ??:0:0
#1 0x7fccb31ce897 in CreateEmptyRequest cc/output/copy_output_request.h:26:28
#2 0x7fccb31ce897 in cc::(anonymous namespace)::SurfaceAggregatorValidSurfaceTest_CopyRequest_Test::TestBody() cc/surfaces/surface_aggregator_unittest.cc:283:0
#3 0x7fccb33160d2 in HandleExceptionsInMethodIfSupported\u003Ctesting::Test, void> testing/gtest/src/gtest.cc:2458:12
#4 0x7fccb33160d2 in testing::Test::Run() testing/gtest/src/gtest.cc:2474:0
#5 0x7fccb331972c in testing::TestInfo::Run() testing/gtest/src/gtest.cc:2656:5
#6 0x7fccb331b0a2 in testing::TestCase::Run() testing/gtest/src/gtest.cc:2774:5
#7 0x7fccb333948b in testing::internal::UnitTestImpl::RunAllTests() testing/gtest/src/gtest.cc:4647:11
#8 0x7fccb3338468 in HandleExceptionsInMethodIfSupported\u003Ctesting::internal::UnitTestImpl, bool> testing/gtest/src/gtest.cc:2458:12
#9 0x7fccb3338468 in testing::UnitTest::Run() testing/gtest/src/gtest.cc:4255:0
#10 0x7fccb32867da in RUN_ALL_TESTS testing/gtest/include/gtest/gtest.h:2237:10
#11 0x7fccb32867da in base::TestSuite::Run() base/test/test_suite.cc:230:0
#12 0x7fccb327388e in Run base/callback.h:396:12
#13 0x7fccb327388e in base::(anonymous namespace)::LaunchUnitTestsInternal(base::Callback\u003Cint ()> const&, int, bool, base::Callback\u003Cvoid ()> const&) base/test/launcher/unit_test_launcher.cc:187:0
#14 0x7fccb32730de in base::LaunchUnitTests(int, char**, base::Callback\u003Cint ()> const&) base/test/launcher/unit_test_launcher.cc:426:10
#15 0x7fccb0ba0c15 in main cc/test/run_all_unittests.cc:12:10
#16 0x7fccaa41076c in __libc_start_main /build/buildd/eglibc-2.15/csu/libc-start.c:226:0
SUMMARY: MemorySanitizer: use-of-uninitialized-value (/tmp/runqXGplV/out/Release/cc_unittests+0x32e1f7e)
Exiting
Original issue's description:
> Add mechanism to signal DelegatedFrameHost that a surface is about to draw.
>
> This allows the FrameSubscriber to request a copy of the output even when the renderer it's subscribing to hasn't changed its contents, but a child renderer (oopif or webview) has.
>
> BUG=529378
> CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
>
> Committed: https://crrev.com/5ed9ab93dd9f448aac722483b6adc6b7a14cdf4b
> Cr-Commit-Position: refs/heads/master@{#354390}
TBR=miu@chromium.org,sadrul@chromium.org,jbauman@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=529378
Review URL: https://codereview.chromium.org/1407173002
Cr-Commit-Position: refs/heads/master@{#354446}
Diffstat (limited to 'cc/surfaces/surface.cc')
-rw-r--r-- | cc/surfaces/surface.cc | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/cc/surfaces/surface.cc b/cc/surfaces/surface.cc index e3b0f5e..16987cb 100644 --- a/cc/surfaces/surface.cc +++ b/cc/surfaces/surface.cc @@ -98,22 +98,11 @@ void Surface::QueueFrame(scoped_ptr<CompositorFrame> frame, void Surface::RequestCopyOfOutput(scoped_ptr<CopyOutputRequest> copy_request) { if (current_frame_ && - !current_frame_->delegated_frame_data->render_pass_list.empty()) { - ScopedPtrVector<CopyOutputRequest>& copy_requests = - current_frame_->delegated_frame_data->render_pass_list.back() - ->copy_requests; - - if (void* source = copy_request->source()) { - // Remove existing CopyOutputRequests made on the Surface by the same - // source. - auto to_remove = copy_requests.remove_if([source]( - const CopyOutputRequest* x) { return x->source() == source; }); - copy_requests.erase(to_remove, copy_requests.end()); - } - copy_requests.push_back(copy_request.Pass()); - } else { + !current_frame_->delegated_frame_data->render_pass_list.empty()) + current_frame_->delegated_frame_data->render_pass_list.back() + ->copy_requests.push_back(copy_request.Pass()); + else copy_request->SendEmptyResult(); - } } void Surface::TakeCopyOutputRequests( |