diff --git a/rpcs3/Emu/GS/RSXThread.h b/rpcs3/Emu/GS/RSXThread.h index 05ef3587b8..db4f9c3563 100644 --- a/rpcs3/Emu/GS/RSXThread.h +++ b/rpcs3/Emu/GS/RSXThread.h @@ -151,6 +151,7 @@ public: std::mutex m_cs_main; SSemaphore m_sem_flush; SSemaphore m_sem_flip; + u64 m_last_flip_time; Callback m_flip_handler; Callback m_user_handler; u64 m_vblank_count; diff --git a/rpcs3/Emu/SysCalls/Modules/cellAdec.h b/rpcs3/Emu/SysCalls/Modules/cellAdec.h index 65ce820f13..108844f22c 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellAdec.h +++ b/rpcs3/Emu/SysCalls/Modules/cellAdec.h @@ -1158,6 +1158,7 @@ public: ~AudioDecoder() { + // TODO: check finalization if (ctx) { for (u32 i = frames.GetCount() - 1; ~i; i--) diff --git a/rpcs3/Emu/SysCalls/Modules/cellDmux.cpp b/rpcs3/Emu/SysCalls/Modules/cellDmux.cpp index 377ebf22dc..3bde3766ac 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellDmux.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellDmux.cpp @@ -145,22 +145,20 @@ u32 dmuxOpen(Demuxer* data) if (esATX[ch]) { ElementaryStream& es = *esATX[ch]; - while (es.isfull()) - { - if (Emu.IsStopped()) - { - LOG_WARNING(HLE, "esATX[%d] was full, waiting aborted", ch); - return; - } - Sleep(1); - } - - if (es.hasunseen()) // hack, probably useless + if (es.isfull()) { stream = backup; + Sleep(1); continue; } + /*if (es.hasunseen()) // hack, probably useless + { + stream = backup; + Sleep(1); + continue; + }*/ + stream.skip(4); len -= 4; @@ -194,14 +192,10 @@ u32 dmuxOpen(Demuxer* data) if (esAVC[ch]) { ElementaryStream& es = *esAVC[ch]; - while (es.isfull()) + if (es.isfull()) { - if (Emu.IsStopped()) - { - LOG_WARNING(HLE, "esAVC[%d] was full, waiting aborted", ch); - return; - } Sleep(1); + continue; } DemuxerStream backup = stream; @@ -217,11 +211,12 @@ u32 dmuxOpen(Demuxer* data) if (pes.new_au && es.hasdata()) // new AU detected { - if (es.hasunseen()) // hack, probably useless + /*if (es.hasunseen()) // hack, probably useless { stream = backup; + Sleep(1); continue; - } + }*/ es.finish(stream); // callback mem_ptr_t esMsg(a128(dmux.memAddr) + (cb_add ^= 16)); @@ -242,6 +237,7 @@ u32 dmuxOpen(Demuxer* data) if (es.isfull()) { stream = backup; + Sleep(1); continue; } diff --git a/rpcs3/Emu/SysCalls/Modules/cellVdec.h b/rpcs3/Emu/SysCalls/Modules/cellVdec.h index 4731d50e3d..7f323c94b7 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellVdec.h +++ b/rpcs3/Emu/SysCalls/Modules/cellVdec.h @@ -766,6 +766,7 @@ public: ~VideoDecoder() { + // TODO: check finalization if (ctx) { for (u32 i = frames.GetCount() - 1; ~i; i--) diff --git a/rpcs3/Gui/ConLogFrame.cpp b/rpcs3/Gui/ConLogFrame.cpp index 3e5a7056a8..be7f4fc6ef 100644 --- a/rpcs3/Gui/ConLogFrame.cpp +++ b/rpcs3/Gui/ConLogFrame.cpp @@ -88,7 +88,7 @@ struct wxWriter : Log::LogListener default: break; } - llogcon->AppendText(wxString(msg.mText)); + llogcon->AppendText(fmt::FromUTF8(msg.mText)); } } if (m_log->GetLastPosition() > GUI_BUFFER_MAX_SIZE)