| 543 | } |
| 544 | |
| 545 | error_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 | |
| 583 | error_code cellMsgDialogOpenSimulViewWarning(vm::ptr<CellMsgDialogCallback> callback, vm::ptr<void> userData, vm::ptr<void> extParam) |
| 584 | { |
nothing calls this directly
no test coverage detected