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:
parent
e62fcbd296
commit
05081b3fa5
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user