MCPcopy Create free account
hub / github.com/RPCSX/rpcsx / cellMsgDialogAbort

Function cellMsgDialogAbort

ps3fw/cellMsgDialog.cpp:545–581  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

543}
544
545error_code cellMsgDialogAbort()
546{
547 cellSysutil.warning("cellMsgDialogAbort()");
548
549 if (auto manager = g_fxo->try_get<rsx::overlays::display_manager>())
550 {
551 if (auto dlg = manager->get<rsx::overlays::message_dialog>();
552 dlg && dlg->source() == msg_dialog_source::_cellMsgDialog)
553 {
554 g_fxo->get<msg_dlg_thread>().wait_until = 0;
555 dlg->close(false, true); // this doesn't call on_close
556 sysutil_send_system_cmd(CELL_SYSUTIL_DRAWING_END, 0);
557 return CELL_OK;
558 }
559
560 return CELL_OK; // Not CELL_MSGDIALOG_ERROR_DIALOG_NOT_OPENED, tested on HW.
561 }
562
563 const auto dlg = g_fxo->get<msg_info>().get();
564
565 if (!dlg || dlg->source != msg_dialog_source::_cellMsgDialog)
566 {
567 return CELL_OK; // Not CELL_MSGDIALOG_ERROR_DIALOG_NOT_OPENED, tested on HW.
568 }
569
570 if (!dlg->state.compare_and_swap_test(MsgDialogState::Open, MsgDialogState::Abort))
571 {
572 return CELL_SYSUTIL_ERROR_BUSY;
573 }
574
575 g_fxo->get<msg_dlg_thread>().wait_until = 0;
576 g_fxo->get<msg_info>().remove(); // this shouldn't call on_close
577 input::SetIntercepted(false); // so we need to reenable the pads here
578 sysutil_send_system_cmd(CELL_SYSUTIL_DRAWING_END, 0);
579
580 return CELL_OK;
581}
582
583error_code cellMsgDialogOpenSimulViewWarning(vm::ptr<CellMsgDialogCallback> callback, vm::ptr<void> userData, vm::ptr<void> extParam)
584{

Callers

nothing calls this directly

Calls 7

sysutil_send_system_cmdFunction · 0.85
sourceMethod · 0.80
SetInterceptedFunction · 0.50
closeMethod · 0.45
getMethod · 0.45
compare_and_swap_testMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected