theme.reset(new Theme(global_flags.theme_filename, global_flags.theme_dirs, resource_pool.get(), num_cards));
// Start listening for clients only once VideoEncoder has written its header, if any.
- httpd.start(9095);
+ httpd.start(global_flags.http_port);
// First try initializing the then PCI devices, then USB, then
// fill up with fake cards until we have the desired number of cards.
DeckLinkCapture *capture = new DeckLinkCapture(decklink, card_index);
DeckLinkOutput *output = new DeckLinkOutput(resource_pool.get(), decklink_output_surface, global_flags.width, global_flags.height, card_index);
- output->set_device(decklink);
+ if (!output->set_device(decklink)) {
+ delete output;
+ output = nullptr;
+ }
configure_card(card_index, capture, CardType::LIVE_CARD, output);
++num_pci_devices;
}
for (int i = 1; i < theme->get_num_channels() + 2; ++i) {
DisplayFrame display_frame;
Theme::Chain chain = theme->get_chain(i, pts(), global_flags.width, global_flags.height, input_state); // FIXME: dimensions
- display_frame.chain = chain.chain;
- display_frame.setup_chain = chain.setup_chain;
+ display_frame.chain = move(chain.chain);
+ display_frame.setup_chain = move(chain.setup_chain);
display_frame.ready_fence = fence;
- display_frame.input_frames = chain.input_frames;
+ display_frame.input_frames = move(chain.input_frames);
display_frame.temp_textures = {};
output_channel[i].output_frame(display_frame);
}
if (has_ready_frame) {
parent->release_display_frame(&ready_frame);
}
- ready_frame = frame;
+ ready_frame = move(frame);
has_ready_frame = true;
// Call the callbacks under the mutex (they should be short),
}
if (has_ready_frame) {
assert(!has_current_frame);
- current_frame = ready_frame;
+ current_frame = move(ready_frame);
ready_frame.ready_fence.reset(); // Drop the refcount.
ready_frame.input_frames.clear(); // Drop the refcounts.
has_current_frame = true;