mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-14 21:17:54 +00:00
[client] egl: simplify filter moving logic with memmove
This avoids duplicating the entire array of filters.
This commit is contained in:
parent
e040b88bf0
commit
ceff9dca9b
1 changed files with 6 additions and 17 deletions
|
@ -120,23 +120,12 @@ static void configUI(void * opaque, int * id)
|
|||
|
||||
if (doMove)
|
||||
{
|
||||
EGL_Filter * tmp[count];
|
||||
memcpy(tmp, filters, sizeof(*tmp) * count);
|
||||
|
||||
size_t s = 0, d = 0;
|
||||
for(size_t i = 0; i < count; ++i)
|
||||
{
|
||||
if (i == mouseIdx)
|
||||
{
|
||||
filters[d++] = tmp[moveIdx];
|
||||
continue;
|
||||
}
|
||||
|
||||
if (s == moveIdx)
|
||||
++s;
|
||||
|
||||
filters[d++] = tmp[s++];
|
||||
}
|
||||
EGL_Filter * tmp = filters[moveIdx];
|
||||
if (mouseIdx > moveIdx) // moving down
|
||||
memmove(filters + moveIdx, filters + moveIdx + 1, (mouseIdx - moveIdx) * sizeof(EGL_Filter *));
|
||||
else // moving up
|
||||
memmove(filters + mouseIdx + 1, filters + mouseIdx, (moveIdx - mouseIdx) * sizeof(EGL_Filter *));
|
||||
filters[mouseIdx] = tmp;
|
||||
}
|
||||
|
||||
if (redraw)
|
||||
|
|
Loading…
Reference in a new issue