- int output_id;
- for( output_id=0; 0 == physical_address && output_id < rsrc->noutput; ++output_id )
- {
- RROutput rr_output_id = rsrc->outputs[output_id];
- XRROutputInfo *output_info = XRRGetOutputInfo(disp, rsrc, rr_output_id);
- if( NULL != output_info )
- {
- if( RR_Connected == output_info->connection )
- {
- for(size_t atom_count=0; 0 == physical_address && atom_count<atom_avail; ++atom_count)
- {
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long bytes_after;
- unsigned char *data;
- int status;
-
- status = XRRGetOutputProperty(disp, rr_output_id, edid_atoms[atom_count], 0, 128, False, False,
- AnyPropertyType, &actual_type, &actual_format,
- &nitems, &bytes_after, &data);
- if( Success == status )
- {
- if((actual_type == XA_INTEGER) && (actual_format == 8) )
- {
- physical_address = CEDIDParser::GetPhysicalAddressFromEDID(data, nitems);
- }
- XFree(data);
- }
- }
- }
- XRRFreeOutputInfo(output_info);
- }
- else
- break; /* problem ? */
- }
- XRRFreeScreenResources(rsrc);