module GPhoto2::Camera::Event
Public Instance Methods
wait(timeout = 2000)
click to toggle source
@param [Integer] timeout time to wait in milliseconds @return [CameraEvent]
# File lib/gphoto2/camera/event.rb, line 6 def wait(timeout = 2000) wait_for_event(timeout) end
wait_for(event_type)
click to toggle source
@param [CameraEventType] event_type @return [CameraEvent]
# File lib/gphoto2/camera/event.rb, line 12 def wait_for(event_type) begin event = wait end until event.type == event_type event end
Private Instance Methods
wait_for_event(timeout)
click to toggle source
# File lib/gphoto2/camera/event.rb, line 22 def wait_for_event(timeout) # assume CameraEventType is an int type_ptr = FFI::MemoryPointer.new(:int) data_ptr = FFI::MemoryPointer.new(:pointer) rc = gp_camera_wait_for_event(ptr, timeout, type_ptr, data_ptr, context.ptr) GPhoto2.check!(rc) type = FFI::GPhoto2::CameraEventType[type_ptr.read_int] data = data_ptr.read_pointer data = case type when :unknown data.null? ? nil : data.read_string when :file_added path_ptr = FFI::GPhoto2::CameraFilePath.new(data) path = CameraFilePath.new(path_ptr) CameraFile.new(self, path.folder, path.name) when :folder_added path_ptr = FFI::GPhoto2::CameraFilePath.new(data) path = CameraFilePath.new(path_ptr) CameraFolder.new(self, '%s/%s' % [path.folder, path.name]) else nil end CameraEvent.new(type, data) end