[client] egl: simplify filter moving logic with memmove

This avoids duplicating the entire array of filters.
This commit is contained in:
Quantum 2021-08-24 15:26:32 -04:00 committed by Geoffrey McRae
parent e040b88bf0
commit ceff9dca9b

View File

@ -120,23 +120,12 @@ static void configUI(void * opaque, int * id)
if (doMove) if (doMove)
{ {
EGL_Filter * tmp[count]; EGL_Filter * tmp = filters[moveIdx];
memcpy(tmp, filters, sizeof(*tmp) * count); if (mouseIdx > moveIdx) // moving down
memmove(filters + moveIdx, filters + moveIdx + 1, (mouseIdx - moveIdx) * sizeof(EGL_Filter *));
size_t s = 0, d = 0; else // moving up
for(size_t i = 0; i < count; ++i) memmove(filters + mouseIdx + 1, filters + mouseIdx, (moveIdx - mouseIdx) * sizeof(EGL_Filter *));
{ filters[mouseIdx] = tmp;
if (i == mouseIdx)
{
filters[d++] = tmp[moveIdx];
continue;
}
if (s == moveIdx)
++s;
filters[d++] = tmp[s++];
}
} }
if (redraw) if (redraw)