зеркало из https://github.com/AvaloniaUI/angle.git
Remove EGLThreadTest to fix angle_end2end_tests failures on Android.
EGLThreadTest doesn't clean up well and the test framework can't handle it well. It caused test failures related to eglMakeCurrent (ELG_BAD_ACCESS) on Android that were masked by retries. Calling eglGetDisplay within a test can cause it to return a cached display from the test runner. The test is unable to know if it should terminate this display. bug: angleproject:3321 Change-Id: I14a539a00acaed4ee71622e7416a6c7a75596606 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1541717 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
This commit is contained in:
Родитель
208af3ebda
Коммит
198de6129a
|
@ -138,7 +138,6 @@ angle_end2end_tests_sources = [
|
||||||
"egl_tests/EGLSurfacelessContextTest.cpp",
|
"egl_tests/EGLSurfacelessContextTest.cpp",
|
||||||
"egl_tests/EGLSurfaceTest.cpp",
|
"egl_tests/EGLSurfaceTest.cpp",
|
||||||
"egl_tests/EGLSyncTest.cpp",
|
"egl_tests/EGLSyncTest.cpp",
|
||||||
"egl_tests/EGLThreadTest.cpp",
|
|
||||||
"test_utils/ANGLETest.cpp",
|
"test_utils/ANGLETest.cpp",
|
||||||
"test_utils/ANGLETest.h",
|
"test_utils/ANGLETest.h",
|
||||||
"test_utils/MultiviewTest.cpp",
|
"test_utils/MultiviewTest.cpp",
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
//
|
|
||||||
// Copyright 2018 The ANGLE Project Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
//
|
|
||||||
// EGLThreadTest.h: Tests multi-threaded uses of EGL.
|
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
|
||||||
|
|
||||||
#include "test_utils/ANGLETest.h"
|
|
||||||
#include "util/system_utils.h"
|
|
||||||
|
|
||||||
#include <thread>
|
|
||||||
|
|
||||||
class EGLThreadTest : public EGLTest
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void threadingTest();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
EGLDisplay mDisplay = EGL_NO_DISPLAY;
|
|
||||||
};
|
|
||||||
|
|
||||||
void EGLThreadTest::threadingTest()
|
|
||||||
{
|
|
||||||
mDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
|
||||||
|
|
||||||
EXPECT_TRUE(mDisplay != EGL_NO_DISPLAY);
|
|
||||||
|
|
||||||
eglInitialize(mDisplay, nullptr, nullptr);
|
|
||||||
eglGetCurrentContext();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test a bug in our EGL TLS implementation.
|
|
||||||
TEST_F(EGLThreadTest, ThreadInitCrash)
|
|
||||||
{
|
|
||||||
std::thread runner(&EGLThreadTest::threadingTest, this);
|
|
||||||
|
|
||||||
// wait for signal from thread
|
|
||||||
runner.join();
|
|
||||||
|
|
||||||
// crash, because the TLS value is NULL on main thread
|
|
||||||
eglGetCurrentSurface(EGL_DRAW);
|
|
||||||
eglGetCurrentContext();
|
|
||||||
|
|
||||||
eglTerminate(mDisplay);
|
|
||||||
}
|
|
Загрузка…
Ссылка в новой задаче