                    "qt/offroad/wifi.cc", "qt/offroad/wifiManager.cc", "qt/widgets/toggle.cc", "qt/widgets/offroad_alerts.cc"],
                   LIBS=qt_libs)
    qt_libs.append(widgets)
  
    qt_src = ["qt/ui.cc", "qt/window.cc", "qt/home.cc", "qt/offroad/settings.cc", "qt/offroad/onboarding.cc"] + src
    qt_env.Program("_ui", qt_src, LIBS=qt_libs)
  
    # spinner and text window
    qt_env.Program("qt/text", ["qt/text.cc"], LIBS=qt_libs)
    qt_env.Program("qt/spinner", ["qt/spinner.cc"], LIBS=qt_libs)
 
</s> remove     // one frame in memory
    VisionBuf yuv_ion = visionbuf_allocate_cl(buf_info.buf_len, device_id, context);

 </s> add  </s> remove libs = [common, 'zmq', 'capnp', 'kj', 'm', cereal, messaging, gpucommon, visionipc]
 </s> add libs = [common, 'zmq', 'capnp', 'kj', 'm', 'OpenCL', cereal, messaging, gpucommon, visionipc] </s> remove     LOGW("connected with buffer size: %d", buf_info.buf_len);
 </s> add     break;
  }

  // loop
  while (!do_exit) {
    VisionBuf *b = &vipc_client.buffers[0];
    LOGW("connected with buffer size: %d (%d x %d)", b->len, b->width, b->height); </s> remove   frame_size = ci->frame_height * ci->frame_stride;
 </s> add  </s> remove     camera_bufs[i] = visionbuf_allocate_cl(frame_size, device_id, context);
 </s> add     camera_bufs[i].allocate(frame_size);
    camera_bufs[i].init_cl(device_id, context);
  if arch == "Darwin":
    # fix OpenCL
    del qt_libs[qt_libs.index('OpenCL')]
    qt_env['FRAMEWORKS'] += ['OpenCL']

                    "qt/offroad/wifi.cc", "qt/offroad/wifiManager.cc", "qt/widgets/toggle.cc", "qt/widgets/offroad_alerts.cc"],
                   LIBS=qt_libs)
    qt_libs.append(widgets)
  
  if arch == "Darwin":
    # fix OpenCL
    del qt_libs[qt_libs.index('OpenCL')]
    qt_env['FRAMEWORKS'] += ['OpenCL']

    qt_src = ["qt/ui.cc", "qt/window.cc", "qt/home.cc", "qt/offroad/settings.cc", "qt/offroad/onboarding.cc"] + src
    qt_env.Program("_ui", qt_src, LIBS=qt_libs)
  
    # spinner and text window
    qt_env.Program("qt/text", ["qt/text.cc"], LIBS=qt_libs)
    qt_env.Program("qt/spinner", ["qt/spinner.cc"], LIBS=qt_libs)
keep keep keep add keep keep keep keep keep keep
 VisionIPC 2.0 (#19641)

* Squashed vipc

* Update release files

* Remove else

* add visionipc to release files

* use poller in vipc receive

* opencl framework instead of lib on macos

* Fix camera webcam

* Fix opencl on mac in ui

* more webcam fixes

* typo in ui sconsfile

* Use cur_yuv_buf

* visionbuf c++ class

* Camera qcom was still using visionbuf_allocate

* Turn loggerd back on

* fix snapshot

* No build needed

* update test camerad

* no more release callback

* make encoder c++

* Revert "no more release callback"

This reverts commit e5707b07002fee665d0483d90713154efc2d70d4.

* fix exit handlers

* No need to check errno

* move release callback call

* s/VIPCBufExtra/VisionIpcBufExtra/g

* use non blocking connect

* ui use non blocking connect

* Lower condition variable wait time

* Snapshot cleanup

* bump cereal

* bump cereal 
selfdrive/ui/SConscript