@@ -82,7 +82,33 @@ def _copy_to_gpu(self):
82
82
#def on_load(self):
83
83
# pass
84
84
85
- # Load the appropriate providers
85
+ import kivy
86
+ import importlib
87
+
88
+ def select_provider (category , llist , base = 'kivy.core' ):
89
+ category = category .lower ()
90
+ basemodule = category
91
+ for option , modulename , classname in llist :
92
+ if option not in kivy .kivy_options [category ]:
93
+ continue
94
+ try :
95
+ name = '{0}.{1}.{2}' .format (base , basemodule , modulename )
96
+ mod = importlib .__import__ (name = name ,
97
+ globals = globals (),
98
+ locals = locals (),
99
+ fromlist = [modulename ], level = 0 )
100
+ cls = mod .__getattribute__ (classname )
101
+
102
+ Logger .info ('{0}: Provider: {1}' .format (category .capitalize (),
103
+ option ))
104
+ return cls
105
+
106
+ except Exception as e :
107
+ pass
108
+
109
+ if platform not in ['android' ]:
110
+ Logger .warning ('{0}: No Provider found.' .format (category .capitalize ()))
111
+
86
112
providers = ()
87
113
88
114
if platform in ['macosx' , 'ios' ]:
@@ -96,12 +122,18 @@ def _copy_to_gpu(self):
96
122
elif platform == 'android' :
97
123
pass
98
124
else :
99
- # providers += (('picamera2 ', 'camera_picamera2', 'CameraPiCamera2'), )
125
+ providers += (('picamera ' , 'camera_picamera2' , 'CameraPiCamera2' ), )
100
126
providers += (('picamera' , 'camera_picamera' , 'CameraPiCamera' ), )
101
127
providers += (('gi' , 'camera_gi' , 'CameraGi' ), )
102
128
providers += (('opencv' , 'camera_opencv' , 'CameraOpenCV' ), )
103
129
104
130
if providers :
105
- ## CHANGED TO camera4kivy.based_on_kivy_core
106
- Camera = core_select_lib ('camera' , (providers ),
131
+ Camera = select_provider ('camera' , (providers ),
107
132
base = 'camera4kivy.based_on_kivy_core' )
133
+
134
+
135
+
136
+
137
+
138
+
139
+
0 commit comments