- transfer.buffer_index = distance(buffers.begin(), i);
- transfer.offset = i->used;
- transfer.size = size;
+void TransferQueue::finalize_transfer(void *staging)
+{
+ auto i = lower_bound_member(async_transfers, staging, &PendingTransfer::staging_address);
+ if(i==async_transfers.end() || i->staging_address!=staging)
+ throw key_error(staging);
+
+ if(i->buffer_index>=0)
+ --buffers[i->buffer_index].async_count;
+ insert_transfer(move(*i));
+ async_transfers.erase(i);
+}