X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fjpeg_frame_view.cpp;h=7da8f14cea7d60d07f21361f1f6f2a521ad7fba0;hb=22d74c9f49f8602fd33c499a575a3fa605f43dee;hp=ff4fcb8242d7e0d565b4de840d3af30f3506c840;hpb=3a14c93e32adeb0ecb30e767ba4397b2545b0f39;p=nageru diff --git a/futatabi/jpeg_frame_view.cpp b/futatabi/jpeg_frame_view.cpp index ff4fcb8..7da8f14 100644 --- a/futatabi/jpeg_frame_view.cpp +++ b/futatabi/jpeg_frame_view.cpp @@ -112,6 +112,8 @@ shared_ptr decode_jpeg(const string &jpeg) } JPEGDestroyer destroy_dinfo(&dinfo); + jpeg_save_markers(&dinfo, JPEG_APP0 + 1, 0xFFFF); + if (!error_mgr.run([&dinfo, &jpeg] { jpeg_mem_src(&dinfo, reinterpret_cast(jpeg.data()), jpeg.size()); jpeg_read_header(&dinfo, true); @@ -119,8 +121,6 @@ shared_ptr decode_jpeg(const string &jpeg) return get_black_frame(); } - jpeg_save_markers(&dinfo, JPEG_APP0 + 1, 0xFFFF); - if (dinfo.num_components != 3) { fprintf(stderr, "Not a color JPEG. (%d components, Y=%dx%d, Cb=%dx%d, Cr=%dx%d)\n", dinfo.num_components, @@ -210,6 +210,7 @@ shared_ptr decode_jpeg(const string &jpeg) glFlushMappedNamedBufferRange(pbo.pbo, 0, dinfo.image_width * dinfo.image_height + chroma_width * chroma_height * 2); glMemoryBarrier(GL_PIXEL_BUFFER_BARRIER_BIT); pbo.upload_done = RefCountedGLsync(GL_SYNC_GPU_COMMANDS_COMPLETE, /*flags=*/0); + glFlush(); frame->uploaded_ui_thread = pbo.upload_done; frame->uploaded_interpolation = pbo.upload_done; global_pbo_pool->release_pbo(move(pbo));