Implement multi-monitor screenshots
This commit is contained in:
@@ -153,7 +153,7 @@ void D3D9Renderer::blit(int x, int y, int w, int h)
|
|||||||
srcRect.right = source.right();
|
srcRect.right = source.right();
|
||||||
|
|
||||||
if (screenshots) {
|
if (screenshots) {
|
||||||
video_screenshot((uint32_t *) &(buffer32->line[y][x]), 0, 0, 2048);
|
video_screenshot_monitor((uint32_t *) &(monitors[m_monitor_index].target_buffer->line[y][x]), 0, 0, 2048, m_monitor_index);
|
||||||
}
|
}
|
||||||
if (SUCCEEDED(d3d9surface->LockRect(&lockRect, &srcRect, 0))) {
|
if (SUCCEEDED(d3d9surface->LockRect(&lockRect, &srcRect, 0))) {
|
||||||
for (int y1 = 0; y1 < h; y1++) {
|
for (int y1 = 0; y1 < h; y1++) {
|
||||||
|
@@ -1925,7 +1925,8 @@ void MainWindow::on_actionUpdate_status_bar_icons_triggered()
|
|||||||
void MainWindow::on_actionTake_screenshot_triggered()
|
void MainWindow::on_actionTake_screenshot_triggered()
|
||||||
{
|
{
|
||||||
startblit();
|
startblit();
|
||||||
screenshots++;
|
for (int i = 0; i < MONITORS_NUM; i++)
|
||||||
|
monitors[i].mon_screenshots++;
|
||||||
endblit();
|
endblit();
|
||||||
device_force_redraw();
|
device_force_redraw();
|
||||||
}
|
}
|
||||||
|
@@ -437,8 +437,8 @@ RendererStack::blitCommon(int x, int y, int w, int h)
|
|||||||
video_copy(scanline, &(monitors[m_monitor_index].target_buffer->line[y1][x]), w * 4);
|
video_copy(scanline, &(monitors[m_monitor_index].target_buffer->line[y1][x]), w * 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (screenshots) {
|
if (monitors[m_monitor_index].mon_screenshots) {
|
||||||
video_screenshot((uint32_t *) imagebits, x, y, 2048);
|
video_screenshot_monitor((uint32_t *) imagebits, x, y, 2048, m_monitor_index);
|
||||||
}
|
}
|
||||||
video_blit_complete_monitor(m_monitor_index);
|
video_blit_complete_monitor(m_monitor_index);
|
||||||
emit blitToRenderer(currentBuf, sx, sy, sw, sh);
|
emit blitToRenderer(currentBuf, sx, sy, sw, sh);
|
||||||
|
@@ -420,7 +420,7 @@ video_take_screenshot_monitor(const char *fn, uint32_t *buf, int start_x, int st
|
|||||||
void
|
void
|
||||||
video_screenshot_monitor(uint32_t *buf, int start_x, int start_y, int row_len, int monitor_index)
|
video_screenshot_monitor(uint32_t *buf, int start_x, int start_y, int row_len, int monitor_index)
|
||||||
{
|
{
|
||||||
char path[1024], fn[128];
|
char path[1024], fn[256];
|
||||||
|
|
||||||
memset(fn, 0, sizeof(fn));
|
memset(fn, 0, sizeof(fn));
|
||||||
memset(path, 0, sizeof(path));
|
memset(path, 0, sizeof(path));
|
||||||
@@ -431,6 +431,8 @@ video_screenshot_monitor(uint32_t *buf, int start_x, int start_y, int row_len, i
|
|||||||
plat_dir_create(path);
|
plat_dir_create(path);
|
||||||
|
|
||||||
path_slash(path);
|
path_slash(path);
|
||||||
|
strcat(path, "Monitor_");
|
||||||
|
snprintf(&path[strlen(path)], 42, "%d_", monitor_index + 1);
|
||||||
|
|
||||||
plat_tempfile(fn, NULL, ".png");
|
plat_tempfile(fn, NULL, ".png");
|
||||||
strcat(path, fn);
|
strcat(path, fn);
|
||||||
@@ -446,7 +448,7 @@ video_screenshot_monitor(uint32_t *buf, int start_x, int start_y, int row_len, i
|
|||||||
void
|
void
|
||||||
video_screenshot(uint32_t *buf, int start_x, int start_y, int row_len)
|
video_screenshot(uint32_t *buf, int start_x, int start_y, int row_len)
|
||||||
{
|
{
|
||||||
video_screenshot_monitor(buf, start_x, start_y, row_len, monitor_index_global);
|
video_screenshot_monitor(buf, start_x, start_y, row_len, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user