    float zoom = 1.0;
    mat3 calibration = DEFAULT_CALIBRATION;
    mat3 intrinsic_matrix = fcam_intrinsic_matrix;
  
    std::mutex frame_lock;
    std::deque<std::pair<uint32_t, VisionBuf*>> frames;
    uint32_t draw_frame_id = 0;
  
  protected slots:
    void vipcConnected(VisionIpcClient *vipc_client);
 
</s> remove   updateFrameMat();
 </s> add  </s> remove       float zx = zoom * 2 * intrinsic_matrix.v[2] / width();
      float zy = zoom * 2 * intrinsic_matrix.v[5] / height();
 </s> add       float zx = zoom * 2 * intrinsic_matrix.v[2] / w;
      float zy = zoom * 2 * intrinsic_matrix.v[5] / h; </s> remove   std::atomic<VisionStreamType> stream_type;
 </s> add   std::atomic<VisionStreamType> active_stream_type;
  std::atomic<VisionStreamType> requested_stream_type;
  std::recursive_mutex frame_lock;
    float zoom = 1.0;
    mat3 calibration = DEFAULT_CALIBRATION;
    mat3 intrinsic_matrix = fcam_intrinsic_matrix;
  
  std::recursive_mutex frame_lock;
    std::deque<std::pair<uint32_t, VisionBuf*>> frames;
    uint32_t draw_frame_id = 0;
  
  protected slots:
    void vipcConnected(VisionIpcClient *vipc_client);
keep keep keep keep replace keep keep keep keep keep
 UI: draw onroad objects on right frame (#26306)

* update before draw

* fix a lot of janky

* fix more flicker

* cleanup

* fix flicker when opening settings

* simplify 
selfdrive/ui/qt/widgets/cameraview.h