예제 #1
0
int
xf86validateScreen(XF86ConfigPtr p)
{
    XF86ConfScreenPtr screen = p->conf_screen_lst;
    XF86ConfMonitorPtr monitor;
    XF86ConfAdaptorLinkPtr adaptor;

    while (screen) {
        if (screen->scrn_obso_driver && !screen->scrn_identifier)
            screen->scrn_identifier = screen->scrn_obso_driver;

        monitor =
            xf86findMonitor(screen->scrn_monitor_str, p->conf_monitor_lst);
        if (screen->scrn_monitor_str) {
            if (monitor) {
                screen->scrn_monitor = monitor;
                if (!xf86validateMonitor(p, screen))
                    return FALSE;
            }
        }

        screen->scrn_device =
            xf86findDevice(screen->scrn_device_str, p->conf_device_lst);

        adaptor = screen->scrn_adaptor_lst;
        while (adaptor) {
            adaptor->al_adaptor =
                xf86findVideoAdaptor(adaptor->al_adaptor_str,
                                     p->conf_videoadaptor_lst);
            if (!adaptor->al_adaptor) {
                xf86validationError(UNDEFINED_ADAPTOR_MSG,
                                    adaptor->al_adaptor_str,
                                    screen->scrn_identifier);
                return FALSE;
            }
            else if (adaptor->al_adaptor->va_fwdref) {
                xf86validationError(ADAPTOR_REF_TWICE_MSG,
                                    adaptor->al_adaptor_str,
                                    adaptor->al_adaptor->va_fwdref);
                return FALSE;
            }

            adaptor->al_adaptor->va_fwdref = strdup(screen->scrn_identifier);
            adaptor = adaptor->list.next;
        }

        screen = screen->list.next;
    }

    return TRUE;
}
int
xf86validateLayout (XF86ConfigPtr p)
{
	XF86ConfLayoutPtr layout = p->conf_layout_lst;
	XF86ConfAdjacencyPtr adj;
	XF86ConfInactivePtr iptr;
	XF86ConfScreenPtr screen;
	XF86ConfDevicePtr device;

	while (layout)
	{
		adj = layout->lay_adjacency_lst;
		while (adj)
		{
			/* the first one can't be "" but all others can */
			screen = xf86findScreen (adj->adj_screen_str, p->conf_screen_lst);
			if (!screen)
			{
				xf86validationError (UNDEFINED_SCREEN_MSG,
							   adj->adj_screen_str, layout->lay_identifier);
				return (FALSE);
			}
			else
				adj->adj_screen = screen;

			adj = adj->list.next;
		}
		iptr = layout->lay_inactive_lst;
		while (iptr)
		{
			device = xf86findDevice (iptr->inactive_device_str,
									p->conf_device_lst);
			if (!device)
			{
				xf86validationError (UNDEFINED_DEVICE_LAY_MSG,
						iptr->inactive_device_str, layout->lay_identifier);
				return (FALSE);
			}
			else
				iptr->inactive_device = device;
			iptr = iptr->list.next;
		}

		if (xf86layoutAddInputDevices(p, layout) == -1)
		    return FALSE;

		layout = layout->list.next;
	}
	return (TRUE);
}
예제 #3
0
파일: Layout.c 프로젝트: L3oV1nc3/VMGL
int
xf86validateLayout (XF86ConfigPtr p)
{
	XF86ConfLayoutPtr layout = p->conf_layout_lst;
	XF86ConfAdjacencyPtr adj;
	XF86ConfInactivePtr iptr;
	XF86ConfInputrefPtr inptr;
	XF86ConfScreenPtr screen;
	XF86ConfDevicePtr device;
	XF86ConfInputPtr input;

	while (layout)
	{
		adj = layout->lay_adjacency_lst;
		while (adj)
		{
			/* the first one can't be "" but all others can */
			screen = xf86findScreen (adj->adj_screen_str, p->conf_screen_lst);
			if (!screen)
			{
				xf86validationError (UNDEFINED_SCREEN_MSG,
							   adj->adj_screen_str, layout->lay_identifier);
				return (FALSE);
			}
			else
				adj->adj_screen = screen;

#if 0
			CheckScreen (adj->adj_top_str, adj->adj_top);
			CheckScreen (adj->adj_bottom_str, adj->adj_bottom);
			CheckScreen (adj->adj_left_str, adj->adj_left);
			CheckScreen (adj->adj_right_str, adj->adj_right);
#endif

			adj = adj->list.next;
		}
		iptr = layout->lay_inactive_lst;
		while (iptr)
		{
			device = xf86findDevice (iptr->inactive_device_str,
									p->conf_device_lst);
			if (!device)
			{
				xf86validationError (UNDEFINED_DEVICE_LAY_MSG,
						iptr->inactive_device_str, layout->lay_identifier);
				return (FALSE);
			}
			else
				iptr->inactive_device = device;
			iptr = iptr->list.next;
		}
		inptr = layout->lay_input_lst;
		while (inptr)
		{
			input = xf86findInput (inptr->iref_inputdev_str,
									p->conf_input_lst);
			if (!input)
			{
				xf86validationError (UNDEFINED_INPUT_MSG,
						inptr->iref_inputdev_str, layout->lay_identifier);
				return (FALSE);
			}
			else
				inptr->iref_inputdev = input;
			inptr = inptr->list.next;
		}
		layout = layout->list.next;
	}
	return (TRUE);
}