def _event_thread(self): handles = (ctypes.c_voidp * 3)() handles[0] = self._skeleton_event handles[1] = self._depth_event handles[2] = self._image_event while 1: wait = _WaitForMultipleObjects(3, handles, False, _INFINITE) if wait == 0: # skeleton data try: frame = self._nui.NuiSkeletonGetNextFrame(0) except KinectError: continue for curSkeleton in frame.SkeletonData: if curSkeleton.eTrackingState != SkeletonTrackingState.NOT_TRACKED: self.skeleton_frame_ready.fire(frame) break elif wait == 1: # depth event depth_frame = self._nui.NuiImageStreamGetNextFrame(self.depth_stream._stream, 0) self.depth_frame_ready.fire(depth_frame) self._nui.NuiImageStreamReleaseFrame(self.depth_stream._stream, depth_frame) elif wait == 2: # image event depth_frame = self._nui.NuiImageStreamGetNextFrame(self.video_stream._stream, 0) self.video_frame_ready.fire(depth_frame) self._nui.NuiImageStreamReleaseFrame(self.video_stream._stream, depth_frame) pass else: # wait failed in some form (abandoned, timeout, or failed), this ends our loop # when we close our events. break
def _event_thread(self): handles = (ctypes.c_voidp * 3)() handles[0] = self._skeleton_event handles[1] = self._depth_event handles[2] = self._image_event while 1: wait = _WaitForMultipleObjects(3, handles, False, _INFINITE) if wait == 0: # skeleton data try: frame = self._nui.NuiSkeletonGetNextFrame(0) except KinectError: continue for curSkeleton in frame.SkeletonData: if curSkeleton.eTrackingState != SkeletonTrackingState.NOT_TRACKED: self.skeleton_frame_ready.fire(frame) break elif wait == 1: # depth event depth_frame = self._nui.NuiImageStreamGetNextFrame( self.depth_stream._stream, 0) self.depth_frame_ready.fire(depth_frame) self._nui.NuiImageStreamReleaseFrame(self.depth_stream._stream, depth_frame) elif wait == 2: # image event depth_frame = self._nui.NuiImageStreamGetNextFrame( self.video_stream._stream, 0) self.video_frame_ready.fire(depth_frame) self._nui.NuiImageStreamReleaseFrame(self.video_stream._stream, depth_frame) pass else: # wait failed in some form (abandoned, timeout, or failed), this ends our loop # when we close our events. break