コード例 #1
0
ファイル: option.c プロジェクト: AtheistSpacePirate/compiz
Bool compSetOption(CompOption * option, CompOptionValue * value)
{
	switch (option->type) {
	case CompOptionTypeBool:
		return compSetBoolOption(option, value);
	case CompOptionTypeInt:
		return compSetIntOption(option, value);
	case CompOptionTypeFloat:
		return compSetFloatOption(option, value);
	case CompOptionTypeString:
		return compSetStringOption(option, value);
	case CompOptionTypeColor:
		return compSetColorOption(option, value);
	case CompOptionTypeMatch:
		return compSetMatchOption(option, value);
	case CompOptionTypeAction:
	case CompOptionTypeKey:
	case CompOptionTypeButton:
	case CompOptionTypeEdge:
	case CompOptionTypeBell:
		return compSetActionOption(option, value);
	case CompOptionTypeList:
		return compSetOptionList(option, value);
	}

	return FALSE;
}
コード例 #2
0
ファイル: video.c プロジェクト: zmike/compiz
static Bool
videoSetDisplayOption(CompPlugin *plugin,
                      CompDisplay *display,
                      const char *name,
                      CompOptionValue *value)
{
   CompOption *o;
   int index;

   VIDEO_DISPLAY(display);

   o = compFindOption(vd->opt, NUM_OPTIONS(vd), name, &index);
   if (!o)
     return FALSE;

   switch (index)
     {
      case VIDEO_DISPLAY_OPTION_YV12:
        if (compSetBoolOption(o, value))
          {
             CompScreen *s;

             for (s = display->screens; s; s = s->next)
               videoSetSupportedHint(s);
          }

      default:
        break;
     }

   return FALSE;
}
コード例 #3
0
ファイル: option.c プロジェクト: AtheistSpacePirate/compiz
Bool compSetOptionList(CompOption * option, CompOptionValue * value)
{
	CompOption o;
	Bool status = FALSE;
	int i, min;

	if (value->list.nValue != option->value.list.nValue) {
		CompOptionValue *v;

		v = malloc(sizeof(CompOptionValue) * value->list.nValue);
		if (!v)
			return FALSE;

		min = MIN(value->list.nValue, option->value.list.nValue);

		for (i = min; i < option->value.list.nValue; i++) {
			switch (option->value.list.type) {
			case CompOptionTypeString:
				if (option->value.list.value[i].s)
					free(option->value.list.value[i].s);
				break;
			case CompOptionTypeMatch:
				matchFini(&option->value.list.value[i].match);
			default:
				break;
			}
		}

		memset(v, 0, sizeof(CompOptionValue) * value->list.nValue);

		if (min)
			memcpy(v, option->value.list.value,
			       sizeof(CompOptionValue) * min);

		if (option->value.list.value)
			free(option->value.list.value);

		option->value.list.value = v;
		option->value.list.nValue = value->list.nValue;

		status = TRUE;
	}

	o = *option;
	o.type = option->value.list.type;

	for (i = 0; i < value->list.nValue; i++) {
		o.value = option->value.list.value[i];

		switch (o.type) {
		case CompOptionTypeBool:
			status |= compSetBoolOption(&o, &value->list.value[i]);
			break;
		case CompOptionTypeInt:
			status |= compSetIntOption(&o, &value->list.value[i]);
			break;
		case CompOptionTypeFloat:
			status |= compSetFloatOption(&o, &value->list.value[i]);
			break;
		case CompOptionTypeString:
			status |=
			    compSetStringOption(&o, &value->list.value[i]);
			break;
		case CompOptionTypeColor:
			status |= compSetColorOption(&o, &value->list.value[i]);
			break;
		case CompOptionTypeMatch:
			status |= compSetMatchOption(&o, &value->list.value[i]);
		default:
			break;
		}

		option->value.list.value[i] = o.value;
	}

	return status;
}