- for(i = 0; i < (int)numAdapt && xvideo_port_id == -1; i++) {
-/* adaptor supports XvImages */
- if(info[i].type & XvImageMask)
- {
- formats = XvListImageFormats(window->display,
- info[i].base_id,
- &numFormats);
-// for(j = 0; j < numFormats; j++)
-// printf("%08x\n", formats[j].id);
-
- int numPorts = info[i].num_ports;
- for(j = 0; j < (int)numFormats && xvideo_port_id < 0; j++)
- {
-/* this adaptor supports the desired format */
- if(formats[j].id == x_color_model)
- {
-/* Try to grab a port */
- for(k = 0; k < numPorts; k++)
- {
-/* Got a port */
- if(Success == XvGrabPort(top_level->display,
- info[i].base_id + k,
- CurrentTime))
- {
+ for( int i = 0; i < (int)numAdapt && xvideo_port_id == -1; i++) {
+ if( !(info[i].type & XvImageMask) || !info[i].num_ports ) continue;
+// adaptor supports XvImages
+ int numFormats = 0, numPorts = info[i].num_ports;
+ XvImageFormatValues *formats =
+ XvListImageFormats(display, info[i].base_id, &numFormats);
+ if( !formats ) continue;
+
+ for( int j=0; j<numFormats && xvideo_port_id<0; ++j ) {
+ if( formats[j].id != x_color_model ) continue;
+// this adaptor supports the desired format, grab a port
+ for( int k=0; k<numPorts; ++k ) {
+ if( Success == XvGrabPort(top_level->display,
+ info[i].base_id+k, CurrentTime) ) {