    };
  
    bool zoomed_view;
    std::mutex lock;
    int latest_texture_id = -1;
    GLuint frame_vao, frame_vbo, frame_ibo;
    mat4 frame_mat;
    std::unique_ptr<WaitFence> wait_fence;
    std::unique_ptr<QOpenGLShaderProgram> program;
    QColor bg = QColor("#000000");
 
</s> remove   latest_texture_id = -1;
 </s> add   latest_frame = nullptr; </s> remove   std::unique_ptr<QOpenGLContext> ctx;
  std::unique_ptr<QOffscreenSurface> surface;
  std::unique_ptr<QOpenGLBuffer> gl_buffer;

  ctx = std::make_unique<QOpenGLContext>();
  ctx->setFormat(context()->format());
  ctx->setShareContext(context());
  ctx->create();
  assert(ctx->isValid());

  surface = std::make_unique<QOffscreenSurface>();
  surface->setFormat(ctx->format());
  surface->create();
  ctx->makeCurrent(surface.get());
  assert(QOpenGLContext::currentContext() == ctx.get());
  initializeOpenGLFunctions();

 </s> add  </s> remove   "./_ui": 33.0,
 </s> add   "./_ui": 18.4,
  VisionBuf *latest_frame = nullptr;
    };
  
    bool zoomed_view;
    std::mutex lock;
  VisionBuf *latest_frame = nullptr;
    GLuint frame_vao, frame_vbo, frame_ibo;
    mat4 frame_mat;
    std::unique_ptr<WaitFence> wait_fence;
    std::unique_ptr<QOpenGLShaderProgram> program;
    QColor bg = QColor("#000000");
keep keep keep keep replace keep keep keep keep keep
 UI: remove memcpy on frame receive (#24318)

* UI: remove frame memcpy

* fix freezing

* fix onroad test 
selfdrive/ui/qt/widgets/cameraview.h