Edit

kc3-lang/SDL/src/video/x11/edid.h

Branch :

  • Show log

    Commit

  • Author : Pierre-Loup A. Griffais
    Date : 2014-09-11 19:24:42
    Hash : 24c86b55
    Message : [X11] Reconcile logical keyboard state with physical state on FocusIn since the window system doesn't do it for us like other platforms. This prevents sticky keys and missed keys when going in and out of focus, for example Alt would appear to stick if switching away from an SDL app with Alt-Tab and had to be pressed again. CR: Sam

  • src/video/x11/edid.h
  • typedef unsigned char uchar;
    typedef struct MonitorInfo MonitorInfo;
    typedef struct Timing Timing;
    typedef struct DetailedTiming DetailedTiming;
    
    typedef enum
    {
        UNDEFINED,
        DVI,
        HDMI_A,
        HDMI_B,
        MDDI,
        DISPLAY_PORT
    } Interface;
    
    typedef enum
    {
        UNDEFINED_COLOR,
        MONOCHROME,
        RGB,
        OTHER_COLOR
    } ColorType;
    
    typedef enum
    {
        NO_STEREO,
        FIELD_RIGHT,
        FIELD_LEFT,
        TWO_WAY_RIGHT_ON_EVEN,
        TWO_WAY_LEFT_ON_EVEN,
        FOUR_WAY_INTERLEAVED,
        SIDE_BY_SIDE
    } StereoType;
    
    struct Timing
    {
        int width;
        int height;
        int frequency;
    };
    
    struct DetailedTiming
    {
        int		pixel_clock;
        int		h_addr;
        int		h_blank;
        int		h_sync;
        int		h_front_porch;
        int		v_addr;
        int		v_blank;
        int		v_sync;
        int		v_front_porch;
        int		width_mm;
        int		height_mm;
        int		right_border;
        int		top_border;
        int		interlaced;
        StereoType	stereo;
    
        int		digital_sync;
        union
        {
    	struct
    	{
    	    int bipolar;
    	    int serrations;
    	    int sync_on_green;
    	} analog;
    
    	struct
    	{
    	    int composite;
    	    int serrations;
    	    int negative_vsync;
    	    int negative_hsync;
    	} digital;
        };
    };
    
    struct MonitorInfo
    {
        int			checksum;
        char		manufacturer_code[4];
        int			product_code;
        unsigned int	serial_number;
        
        int			production_week;	/* -1 if not specified */
        int			production_year;	/* -1 if not specified */
        int			model_year;		/* -1 if not specified */
    
        int			major_version;
        int			minor_version;
    
        int			is_digital;
        
        union
        {
    	struct
    	{
    	    int		bits_per_primary;
    	    Interface	interface;
    	    int		rgb444;
    	    int		ycrcb444;
    	    int		ycrcb422;
    	} digital;
    
    	struct
    	{
    	    double	video_signal_level;
    	    double	sync_signal_level;
    	    double	total_signal_level;
    
    	    int		blank_to_black;
    
    	    int		separate_hv_sync;
    	    int		composite_sync_on_h;
    	    int		composite_sync_on_green;
    	    int		serration_on_vsync;
    	    ColorType	color_type;
    	} analog;
        };
    
        int			width_mm;		/* -1 if not specified */
        int			height_mm;		/* -1 if not specified */
        double		aspect_ratio;		/* -1.0 if not specififed */
    
        double		gamma;			/* -1.0 if not specified */
    
        int			standby;
        int			suspend;
        int			active_off;
    
        int			srgb_is_standard;
        int			preferred_timing_includes_native;
        int			continuous_frequency;
    
        double		red_x;
        double		red_y;
        double		green_x;
        double		green_y;
        double		blue_x;
        double		blue_y;
        double		white_x;
        double		white_y;
    
        Timing		established[24];	/* Terminated by 0x0x0 */
        Timing		standard[8];
        
        int			n_detailed_timings;
        DetailedTiming	detailed_timings[4];	/* If monitor has a preferred
    						 * mode, it is the first one
    						 * (whether it has, is
    						 * determined by the 
    						 * preferred_timing_includes
    						 * bit.
    						 */
    
        /* Optional product description */
        char		dsc_serial_number[14];
        char		dsc_product_name[14];
        char		dsc_string[14];		/* Unspecified ASCII data */
    };
    
    MonitorInfo *decode_edid (const uchar *data);
    void         dump_monitor_info (MonitorInfo *info);
    char *       make_display_name (const char        *output_name,
    				const MonitorInfo *info);