summaryrefslogtreecommitdiff
path: root/graphics/frameworks/patches/patch-ab
blob: fe0451b5191928baca5ee18ad9709c41871ca805 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
$NetBSD: patch-ab,v 1.1.1.1 2009/01/10 21:08:14 jmcneill Exp $

NetBSD doesn't provide v4l1 compatibility, so use libv4l1 until
frameworks is ported to v4l2.

--- src/camera.c.orig	2007-02-27 22:18:50.000000000 -0500
+++ src/camera.c
@@ -1,5 +1,6 @@
 #include <math.h>
 #include "common.h"
+#include <libv4l1.h>
 
 /* internal function prototypes */
 gpointer read_thread(gpointer data);
@@ -158,7 +159,7 @@ gint open_cam(struct Camera *camera, GSt
 {
     if (camera->device <= 0) {
         camera->device_name = device_name;
-	camera->device = open(device_name->str, O_RDWR);
+	camera->device = v4l1_open(device_name->str, O_RDWR);
 	if (camera->device < 0) {
             /* frameworks_error(device_string) */
             camera->open = FALSE;
@@ -182,7 +183,7 @@ gint close_cam(struct Camera *camera)
 {
     if (camera->open == TRUE) {
         mmap_teardown(camera);
-	close(camera->device);
+	v4l1_close(camera->device);
         g_string_free(camera->device_name, TRUE);
         camera->device_name = NULL;
 	camera->device = 0;
@@ -201,12 +202,12 @@ void mmap_setup(struct Camera *camera)
         mmap_teardown(camera);
     if (camera->vid_caps.type & VID_TYPE_CAPTURE) {
         /* mmap method is available */
-        ret = ioctl(camera->device, VIDIOCGMBUF, &camera->vmbuf);
+        ret = v4l1_ioctl(camera->device, VIDIOCGMBUF, &camera->vmbuf);
         if (ret < 0) {
             perror("ioctl(VIDIOCGMBUF)");
             camera->mmap = NULL;
         } else {
-            camera->mmap = mmap(0,
+            camera->mmap = v4l1_mmap(0,
                                 camera->vmbuf.size,
                                 PROT_READ | PROT_WRITE,
                                 MAP_SHARED, camera->device,
@@ -224,7 +225,7 @@ void mmap_setup(struct Camera *camera)
 void mmap_teardown(struct Camera *camera)
 {
     if (camera->mmap != NULL) {
-        munmap(camera->mmap, camera->vmbuf.size);
+        v4l1_munmap(camera->mmap, camera->vmbuf.size);
         camera->mmap = NULL;
     }
 }
@@ -259,12 +260,12 @@ void frameworks_camera_update_status(str
 
 void set_status(struct Camera *camera)
 {
-    if (ioctl(camera->device, VIDIOCSPICT, &camera->vid_pic) == -1) {
+    if (v4l1_ioctl(camera->device, VIDIOCSPICT, &camera->vid_pic) == -1) {
 	/* error */
         perror("ioctl(VIDIOCSPICT)");
 	/* printf("error setting video_picture\n"); */
     }
-    if (ioctl(camera->device, VIDIOCSWIN, &camera->vid_win) == -1) {
+    if (v4l1_ioctl(camera->device, VIDIOCSWIN, &camera->vid_win) == -1) {
         perror("ioctl(VIDIOCSWIN)");
         /* printf("error setting video_window\n"); */
     }
@@ -272,9 +273,9 @@ void set_status(struct Camera *camera)
 
 void get_status(struct Camera *camera)
 {
-    ioctl(camera->device, VIDIOCGCAP, &camera->vid_caps);
-    ioctl(camera->device, VIDIOCGWIN, &camera->vid_win);
-    ioctl(camera->device, VIDIOCGPICT, &camera->vid_pic);
+    v4l1_ioctl(camera->device, VIDIOCGCAP, &camera->vid_caps);
+    v4l1_ioctl(camera->device, VIDIOCGWIN, &camera->vid_win);
+    v4l1_ioctl(camera->device, VIDIOCGPICT, &camera->vid_pic);
 
     /* apparently MONOCHORME means grey scale? this was in gqcam...*/
     if (camera->vid_caps.type & VID_TYPE_MONOCHROME) {
@@ -329,14 +330,14 @@ int read_into(struct Camera *camera, str
         vmmap.width = buf->width;
         vmmap.height = buf->height;
         vmmap.format = camera->vid_pic.palette;
-        if(ioctl(camera->device, VIDIOCMCAPTURE, &vmmap) < 0) {
+        if(v4l1_ioctl(camera->device, VIDIOCMCAPTURE, &vmmap) < 0) {
             perror("ioctl(VIDIOCMCAPTURE)");
             mmap_teardown(camera);  /* switch to read() */
             return -1;
         }
         n = 0;
         for (i=0; i<3; i++) {
-            if (ioctl(camera->device, VIDIOCSYNC, &n) == -1)  /* failure */
+            if (v4l1_ioctl(camera->device, VIDIOCSYNC, &n) == -1)  /* failure */
             {
                 if (errno == EINTR) {
                     ;   /* try again on EINTR */
@@ -355,7 +356,7 @@ int read_into(struct Camera *camera, str
         }
     } else {  /* use read method */
         for (i=0; i<3; i++) {  /* give it 3 tries to get some data */
-            bytes_read = read(camera->device, buf->data, bytes_requested);
+            bytes_read = v4l1_read(camera->device, buf->data, bytes_requested);
             if (bytes_read > 0) {
 
                 /* more than zero isn't really success (should be "if