use hal to detect the presence of a v4l device

* right now we check for anything with the capability of 'video4linux' and
  for info.linux.driver = 'cafe1000-ccic' which is the olpc's webcam
This commit is contained in:
John (J5) Palmieri 2007-03-05 16:10:14 -05:00
parent e62fcbd296
commit 05081b3fa5

View File

@ -15,6 +15,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import gtk, gobject import gtk, gobject
import dbus
import hippo import hippo
import logging import logging
from gettext import gettext as _ from gettext import gettext as _
@ -100,11 +101,28 @@ class VideoBox(hippo.CanvasBox, hippo.CanvasItem):
self._label.props.font_desc = font.DEFAULT.get_pango_desc() self._label.props.font_desc = font.DEFAULT.get_pango_desc()
self.append(self._label) self.append(self._label)
# check for camera and if not generate a .jpg
has_webcam = False
try: try:
import glive sys_bus = dbus.SystemBus()
self._video = glive.LiveVideoSlot(_VIDEO_WIDTH, _VIDEO_HEIGHT) hal_obj = sys_bus.get_object ('org.freedesktop.Hal', '/org/freedesktop/Hal/Manager')
except ImportError: hal = dbus.Interface (hal_obj, 'org.freedesktop.Hal.Manager')
self._video = IntroFallbackVideo()
udis = hal.FindDeviceByCapability ('video4linux')
# check for the olpc specific camera
if not udis:
udis = hal.FindDeviceStringMatch('info.linux.driver','cafe1000-ccic')
if udis:
has_webcam = True
finally:
if has_webcam:
import glive
self._video = glive.LiveVideoSlot(_VIDEO_WIDTH, _VIDEO_HEIGHT)
else:
self._video = IntroFallbackVideo()
self._video.set_size_request(_VIDEO_WIDTH, _VIDEO_HEIGHT) self._video.set_size_request(_VIDEO_WIDTH, _VIDEO_HEIGHT)
self._video.connect('pixbuf', self._new_pixbuf_cb) self._video.connect('pixbuf', self._new_pixbuf_cb)