return;
}
- size_t old_num_queued_frames = this->num_queued_frames;
+ lock_guard<mutex> lock(freelist_mutex);
+ lingering_generations[generation] = LingeringGeneration{ move(userdata), this->num_queued_frames };
+ ++generation;
+
+ while (!freelist.empty()) {
+ Frame frame = freelist.front();
+ freelist.pop();
+ destroy_frame(&frame);
+ }
this->pixel_format = pixel_format;
this->frame_size = frame_size;
this->permissions = permissions;
this->map_bits = map_bits;
- lock_guard<mutex> lock(freelist_mutex);
- lingering_generations[generation] = LingeringGeneration{ move(userdata), old_num_queued_frames };
- ++generation;
-
- while (!freelist.empty()) {
- Frame frame = freelist.front();
- freelist.pop();
- destroy_frame(&frame);
- }
-
userdata.reset(new Userdata[num_queued_frames]);
for (size_t i = 0; i < num_queued_frames; ++i) {
init_frame(i, frame_size, width, height, permissions, map_bits, generation);