Don't initialize slots by setf'ing them. Do it in make-instance.
authorVitaly Mayatskikh <v.mayatskih@gmail.com>
Sat, 7 Nov 2009 13:55:23 +0000 (7 14:55 +0100)
committerVitaly Mayatskikh <v.mayatskih@gmail.com>
Sat, 7 Nov 2009 13:55:23 +0000 (7 14:55 +0100)
v4l2.lisp

index e1522ad..36a0626 100644 (file)
--- a/v4l2.lisp
+++ b/v4l2.lisp
 
 (defun get-stream-params (fd buf-type)
   "Get stream parameters."
-  (let ((parms (make-instance 'streamparm)))
-    (setf (streamparm-type parms) buf-type)
+  (let ((parms (make-instance 'streamparm :type buf-type)))
     (ioctl fd vidioc-g-parm (streamparm-raw parms))
     parms))
 
 (defun get-tuner-params (fd idx)
   "Get tuner parameters."
-  (let ((tuner (make-instance 'tuner)))
-    (setf (tuner-index tuner) idx)
+  (let ((tuner (make-instance 'tuner :index idx)))
     (ioctl fd vidioc-g-tuner (tuner-raw tuner))
     tuner))
 
 (defun get-input-params (fd idx)
   "Get input parameters."
-  (let ((vidin (make-instance 'input)))
-    (setf (input-index vidin) idx)
+  (let ((vidin (make-instance 'input :index idx)))
     (ioctl fd vidioc-enuminput (input-raw vidin))
     vidin))
 
 (defun get-input-standard (fd idx)
   "Get input standard."
-  (let ((std (make-instance 'standard)))
-    (setf (standard-index std) idx)
+  (let ((std (make-instance 'standard :index idx)))
     (ioctl fd vidioc-enumstd (standard-raw std))
     std))
 
 (defun get-format (fd idx)
   "Get pixel format."
-  (let ((fmt (make-instance 'fmtdesc)))
-    (with-slots (index type) fmt
-      (setf index idx
-           type :buf-type-video-capture))
+  (let ((fmt (make-instance 'fmtdesc :index idx :type :buf-type-video-capture)))
     (ioctl fd vidioc-enum-fmt (fmtdesc-raw fmt))
     fmt))
 
 
 (defun set-image-format (fd w h pixfmt)
   "Set dimensions and pixel format."
-  (let ((format (make-instance 'format)))
-    (with-slots (type pix) format
-      (with-slots (width height pixelformat field colorspace) pix
-       (setf type :buf-type-video-capture
-             width w
-             height h
-             pixelformat pixfmt
-             field :field-any
-             colorspace :colorspace-srgb)))
+  (let ((format (make-instance 'format :type :buf-type-video-capture)))
+    (with-slots (width height pixelformat field colorspace) (format-pix format)
+      (setf width w
+           height h
+           pixelformat pixfmt
+           field :field-any
+           colorspace :colorspace-srgb))
     (ioctl fd vidioc-s-fmt (format-raw format))
     format))
 
 (defun get-image-format (fd)
   "Get current format."
-  (let ((format (make-instance 'format)))
-    (setf (format-type format) :buf-type-video-capture)
+  (let ((format (make-instance 'format :type :buf-type-video-capture)))
     (ioctl fd vidioc-g-fmt (format-raw format))
     format))
 
 
 (defun query-buffer (fd n map-type)
   "Query buffer number `n' of type `map-type'."
-  (let ((buf (make-instance 'buffer)))
-    (with-slots (index type memory) buf
-      (setf index n
-           type :buf-type-video-capture
-           memory map-type))
+  (let ((buf (make-instance 'buffer :index n
+                           :type :buf-type-video-capture
+                           :memory map-type)))
     (ioctl fd vidioc-querybuf (buffer-raw buf))
     buf))