Xi: store feedback classes in devProviates system as well.
This is a follow-up to cb48d88085
.
This commit is contained in:
parent
cb48d88085
commit
6866e84e3c
|
@ -253,9 +253,19 @@ CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master)
|
||||||
static void
|
static void
|
||||||
DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to)
|
DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to)
|
||||||
{
|
{
|
||||||
|
ClassesPtr classes;
|
||||||
|
|
||||||
if (from->kbdfeed)
|
if (from->kbdfeed)
|
||||||
{
|
{
|
||||||
KbdFeedbackPtr *k, it;
|
KbdFeedbackPtr *k, it;
|
||||||
|
|
||||||
|
if (!to->kbdfeed)
|
||||||
|
{
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates,
|
||||||
|
UnusedClassesPrivateKey);
|
||||||
|
to->kbdfeed = classes->kbdfeed;
|
||||||
|
}
|
||||||
|
|
||||||
k = &to->kbdfeed;
|
k = &to->kbdfeed;
|
||||||
for(it = from->kbdfeed; it; it = it->next)
|
for(it = from->kbdfeed; it; it = it->next)
|
||||||
{
|
{
|
||||||
|
@ -281,12 +291,22 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to)
|
||||||
}
|
}
|
||||||
} else if (to->kbdfeed && !from->kbdfeed)
|
} else if (to->kbdfeed && !from->kbdfeed)
|
||||||
{
|
{
|
||||||
FreeFeedbackClass(KbdFeedbackClass, (pointer)&to->kbdfeed);
|
ClassesPtr classes;
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates, UnusedClassesPrivateKey);
|
||||||
|
classes->kbdfeed = to->kbdfeed;
|
||||||
|
to->kbdfeed = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (from->ptrfeed)
|
if (from->ptrfeed)
|
||||||
{
|
{
|
||||||
PtrFeedbackPtr *p, it;
|
PtrFeedbackPtr *p, it;
|
||||||
|
if (!to->ptrfeed)
|
||||||
|
{
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates,
|
||||||
|
UnusedClassesPrivateKey);
|
||||||
|
to->ptrfeed = classes->ptrfeed;
|
||||||
|
}
|
||||||
|
|
||||||
p = &to->ptrfeed;
|
p = &to->ptrfeed;
|
||||||
for (it = from->ptrfeed; it; it = it->next)
|
for (it = from->ptrfeed; it; it = it->next)
|
||||||
{
|
{
|
||||||
|
@ -306,12 +326,23 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to)
|
||||||
}
|
}
|
||||||
} else if (to->ptrfeed && !from->ptrfeed)
|
} else if (to->ptrfeed && !from->ptrfeed)
|
||||||
{
|
{
|
||||||
FreeFeedbackClass(PtrFeedbackClass, (pointer)&to->ptrfeed);
|
ClassesPtr classes;
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates, UnusedClassesPrivateKey);
|
||||||
|
classes->ptrfeed = to->ptrfeed;
|
||||||
|
to->ptrfeed = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (from->intfeed)
|
if (from->intfeed)
|
||||||
{
|
{
|
||||||
IntegerFeedbackPtr *i, it;
|
IntegerFeedbackPtr *i, it;
|
||||||
|
|
||||||
|
if (!to->intfeed)
|
||||||
|
{
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates,
|
||||||
|
UnusedClassesPrivateKey);
|
||||||
|
to->intfeed = classes->intfeed;
|
||||||
|
}
|
||||||
|
|
||||||
i = &to->intfeed;
|
i = &to->intfeed;
|
||||||
for (it = from->intfeed; it; it = it->next)
|
for (it = from->intfeed; it; it = it->next)
|
||||||
{
|
{
|
||||||
|
@ -331,12 +362,23 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to)
|
||||||
}
|
}
|
||||||
} else if (to->intfeed && !from->intfeed)
|
} else if (to->intfeed && !from->intfeed)
|
||||||
{
|
{
|
||||||
FreeFeedbackClass(IntegerFeedbackClass, (pointer)&to->intfeed);
|
ClassesPtr classes;
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates, UnusedClassesPrivateKey);
|
||||||
|
classes->intfeed = to->intfeed;
|
||||||
|
to->intfeed = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (from->stringfeed)
|
if (from->stringfeed)
|
||||||
{
|
{
|
||||||
StringFeedbackPtr *s, it;
|
StringFeedbackPtr *s, it;
|
||||||
|
|
||||||
|
if (!to->stringfeed)
|
||||||
|
{
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates,
|
||||||
|
UnusedClassesPrivateKey);
|
||||||
|
to->stringfeed = classes->stringfeed;
|
||||||
|
}
|
||||||
|
|
||||||
s = &to->stringfeed;
|
s = &to->stringfeed;
|
||||||
for (it = from->stringfeed; it; it = it->next)
|
for (it = from->stringfeed; it; it = it->next)
|
||||||
{
|
{
|
||||||
|
@ -356,12 +398,23 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to)
|
||||||
}
|
}
|
||||||
} else if (to->stringfeed && !from->stringfeed)
|
} else if (to->stringfeed && !from->stringfeed)
|
||||||
{
|
{
|
||||||
FreeFeedbackClass(StringFeedbackClass, (pointer)&to->stringfeed);
|
ClassesPtr classes;
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates, UnusedClassesPrivateKey);
|
||||||
|
classes->stringfeed = to->stringfeed;
|
||||||
|
to->stringfeed = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (from->bell)
|
if (from->bell)
|
||||||
{
|
{
|
||||||
BellFeedbackPtr *b, it;
|
BellFeedbackPtr *b, it;
|
||||||
|
|
||||||
|
if (!to->bell)
|
||||||
|
{
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates,
|
||||||
|
UnusedClassesPrivateKey);
|
||||||
|
to->bell = classes->bell;
|
||||||
|
}
|
||||||
|
|
||||||
b = &to->bell;
|
b = &to->bell;
|
||||||
for (it = from->bell; it; it = it->next)
|
for (it = from->bell; it; it = it->next)
|
||||||
{
|
{
|
||||||
|
@ -382,12 +435,23 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to)
|
||||||
}
|
}
|
||||||
} else if (to->bell && !from->bell)
|
} else if (to->bell && !from->bell)
|
||||||
{
|
{
|
||||||
FreeFeedbackClass(BellFeedbackClass, (pointer)&to->bell);
|
ClassesPtr classes;
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates, UnusedClassesPrivateKey);
|
||||||
|
classes->bell = to->bell;
|
||||||
|
to->bell = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (from->leds)
|
if (from->leds)
|
||||||
{
|
{
|
||||||
LedFeedbackPtr *l, it;
|
LedFeedbackPtr *l, it;
|
||||||
|
|
||||||
|
if (!to->leds)
|
||||||
|
{
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates,
|
||||||
|
UnusedClassesPrivateKey);
|
||||||
|
to->leds = classes->leds;
|
||||||
|
}
|
||||||
|
|
||||||
l = &to->leds;
|
l = &to->leds;
|
||||||
for (it = from->leds; it; it = it->next)
|
for (it = from->leds; it; it = it->next)
|
||||||
{
|
{
|
||||||
|
@ -412,7 +476,10 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to)
|
||||||
}
|
}
|
||||||
} else if (to->leds && !from->leds)
|
} else if (to->leds && !from->leds)
|
||||||
{
|
{
|
||||||
FreeFeedbackClass(LedFeedbackClass, (pointer)&to->leds);
|
ClassesPtr classes;
|
||||||
|
classes = dixLookupPrivate(&to->devPrivates, UnusedClassesPrivateKey);
|
||||||
|
classes->leds = to->leds;
|
||||||
|
to->leds = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue