Changeset View
Changeset View
Standalone View
Standalone View
src/client/outputconfiguration.cpp
Show First 20 Lines • Show All 162 Lines • ▼ Show 20 Line(s) | |||||
163 | } | 163 | } | ||
164 | 164 | | |||
165 | void OutputConfiguration::setScale(OutputDevice *outputdevice, qint32 scale) | 165 | void OutputConfiguration::setScale(OutputDevice *outputdevice, qint32 scale) | ||
166 | { | 166 | { | ||
167 | org_kde_kwin_outputdevice *od = outputdevice->output(); | 167 | org_kde_kwin_outputdevice *od = outputdevice->output(); | ||
168 | org_kde_kwin_outputconfiguration_scale(d->outputconfiguration, od, scale); | 168 | org_kde_kwin_outputconfiguration_scale(d->outputconfiguration, od, scale); | ||
169 | } | 169 | } | ||
170 | 170 | | |||
171 | void OutputConfiguration::setColorCurves(OutputDevice *outputdevice, | ||||
172 | QVector<quint16> red, QVector<quint16> green, QVector<quint16> blue) | ||||
173 | { | ||||
174 | org_kde_kwin_outputdevice *od = outputdevice->output(); | ||||
175 | | ||||
176 | wl_array wlRed, wlGreen, wlBlue; | ||||
177 | | ||||
178 | auto fillArray = [](QVector<quint16> &origin, wl_array *dest) { | ||||
179 | wl_array_init(dest); | ||||
180 | int memLength = sizeof(uint16_t) * origin.size(); | ||||
zzag: You forgot `const`. :-D
Also, I would use `size_t` instead of `int`. | |||||
181 | void *s = wl_array_add(dest, memLength); | ||||
182 | memcpy(s, origin.data(), memLength); | ||||
183 | }; | ||||
184 | fillArray(red, &wlRed); | ||||
Maybe static_cast? I haven't used wl_array but can't you allocate big enough contiguous chunk of memory and call memcpy, e.g. wl_array wlRed; wl_array_init(&wlRed); auto* redDest = wl_array_add(&wlRed, sizeof(uint16_t) * red.count()); memcpy(redDest, red.data(), sizeof(uint16_t) * red.count()); zzag: Maybe `static_cast`?
I haven't used wl_array but can't you allocate big enough contiguous… | |||||
Good point about allocating directly all of the memory. I looked up the wl_array definition and should be no problem. romangg: Good point about allocating directly all of the memory. I looked up the wl_array definition and… | |||||
185 | fillArray(green, &wlGreen); | ||||
186 | fillArray(blue, &wlBlue); | ||||
187 | | ||||
188 | org_kde_kwin_outputconfiguration_colorcurves(d->outputconfiguration, od, &wlRed, &wlGreen, &wlBlue); | ||||
189 | | ||||
190 | wl_array_release(&wlRed); | ||||
191 | wl_array_release(&wlGreen); | ||||
192 | wl_array_release(&wlBlue); | ||||
193 | } | ||||
194 | | ||||
171 | void OutputConfiguration::apply() | 195 | void OutputConfiguration::apply() | ||
172 | { | 196 | { | ||
173 | org_kde_kwin_outputconfiguration_apply(d->outputconfiguration); | 197 | org_kde_kwin_outputconfiguration_apply(d->outputconfiguration); | ||
174 | } | 198 | } | ||
175 | 199 | | |||
176 | // Callbacks | 200 | // Callbacks | ||
177 | org_kde_kwin_outputconfiguration_listener OutputConfiguration::Private::s_outputconfigurationListener = { | 201 | org_kde_kwin_outputconfiguration_listener OutputConfiguration::Private::s_outputconfigurationListener = { | ||
178 | appliedCallback, | 202 | appliedCallback, | ||
Show All 21 Lines |
You forgot const. :-D
Also, I would use size_t instead of int.