ui/cameraview: merge EGL Image Clearing code into clearEGLImages() (#32292)

This commit is contained in:
Dean Lee
2024-04-26 02:05:45 +08:00
committed by GitHub
parent 3efd0ff4fa
commit 7e6dda546e
2 changed files with 15 additions and 23 deletions
+14 -23
View File
@@ -6,14 +6,6 @@
#include <GLES3/gl3.h>
#endif
#include <cmath>
#include <set>
#include <string>
#include <utility>
#include <QOpenGLBuffer>
#include <QOffscreenSurface>
namespace {
const char frame_vertex_shader[] =
@@ -197,15 +189,7 @@ void CameraWidget::stopVipcThread() {
vipc_thread = nullptr;
}
#ifdef QCOM2
EGLDisplay egl_display = eglGetCurrentDisplay();
assert(egl_display != EGL_NO_DISPLAY);
for (auto &pair : egl_images) {
eglDestroyImageKHR(egl_display, pair.second);
assert(eglGetError() == EGL_SUCCESS);
}
egl_images.clear();
#endif
clearEGLImages();
}
void CameraWidget::availableStreamsUpdated(std::set<VisionStreamType> streams) {
@@ -336,12 +320,7 @@ void CameraWidget::vipcConnected(VisionIpcClient *vipc_client) {
stream_stride = vipc_client->buffers[0].stride;
#ifdef QCOM2
EGLDisplay egl_display = eglGetCurrentDisplay();
assert(egl_display != EGL_NO_DISPLAY);
for (auto &pair : egl_images) {
eglDestroyImageKHR(egl_display, pair.second);
}
egl_images.clear();
clearEGLImages();
for (int i = 0; i < vipc_client->num_buffers; i++) { // import buffers into OpenGL
int fd = dup(vipc_client->buffers[i].fd); // eglDestroyImageKHR will close, so duplicate
@@ -435,3 +414,15 @@ void CameraWidget::clearFrames() {
frames.clear();
available_streams.clear();
}
void CameraWidget::clearEGLImages() {
#ifdef QCOM2
EGLDisplay egl_display = eglGetCurrentDisplay();
assert(egl_display != EGL_NO_DISPLAY);
for (auto &pair : egl_images) {
eglDestroyImageKHR(egl_display, pair.second);
}
egl_images.clear();
#endif
}
+1
View File
@@ -58,6 +58,7 @@ protected:
void updateCalibration(const mat3 &calib);
void vipcThread();
void clearFrames();
void clearEGLImages();
int glWidth();
int glHeight();