answered
2018-02-14 00:06:42 +0200
Finally I was able to get in touch with an Xperia X and working on fixing Sailfish X issues.
So far so good, I was able identify the root cause: in-game audio.
To be honest, I'm a little bit lost there - so, I would like to ask for help from the community...
Details below: there were many QML Audio components in use during the game:
- one pool for weapon effects (5 QML Audio items)
- one pool for four different audio effect for smashing monsters by hand (4 QML Audio element)
- one dedicated one for game effect played when one life is lost
- if audio disabled, game just runs fine
- if I comment out all but the first pool of Audio elements game runs fine
- if first pool is enabled, together with one-and-single one from second pool (rest is commented out) games runs fine for a while, in-game effects are OK but after a while no sound any more - and app hangs-up in the game result page
QML Audio has been changed to Media Player, same effect - only achievement that I was able to see following log entry (after exporting QT_LOGGING_RULES="*.debug=true"
):
Feb 13 22:32:16 Sailfish kernel: afe_callback: cmd = 0x100ef returned error = 0x2
Feb 13 22:32:16 Sailfish kernel: afe_apr_send_pkt: DSP returned error[ADSP_EBADPARAM]
Feb 13 22:32:16 Sailfish kernel: afe_send_cal_block: AFE cal for port 0x4000 failed -22
Feb 13 22:32:20 Sailfish sion[13927]: [W] unknown:0 - appsrc: push buffer wrong state
Last line could be from GSteramer code:
void QGstAppSrc::pushDataToAppSrc()
{
if (!isStreamValid() || !m_setup)
return;
if (m_dataRequested && !m_enoughData) {
qint64 size;
if (m_dataRequestSize == (unsigned int)-1)
size = qMin(m_stream->bytesAvailable(), queueSize());
else
size = qMin(m_stream->bytesAvailable(), (qint64)m_dataRequestSize);
void *data = g_malloc(size);
GstBuffer* buffer = gst_app_buffer_new(data, size, g_free, data);
buffer->offset = m_stream->pos();
qint64 bytesRead = m_stream->read((char*)GST_BUFFER_DATA(buffer), size);
buffer->offset_end = buffer->offset + bytesRead - 1;
if (bytesRead > 0) {
m_dataRequested = false;
m_enoughData = false;
GstFlowReturn ret = gst_app_src_push_buffer (GST_APP_SRC (element()), buffer);
if (ret == GST_FLOW_ERROR) {
qWarning()<<"appsrc: push buffer error";
} else if (ret == GST_FLOW_WRONG_STATE) {
qWarning()<<"appsrc: push buffer wrong state";
} else if (ret == GST_FLOW_RESEND) {
qWarning()<<"appsrc: push buffer resend";
}
}
// After reading we might be all done
if (m_stream->atEnd())
sendEOS();
} else if (m_stream->atEnd()) {
sendEOS();
}
}
now you re confusing me. the second paragraph( under the picture) does not make that much sense to me if you offer a native sailfish version (+ this beeing the sailfish community page). "your android device" seems a bit misplaced. you might wanna elaborate on that. but - native sailfish - thumbs up!
kaktux ( 2017-12-11 12:55:31 +0200 )edit@kaktux: use Sailfish native version for Sailfish.
BUT. if you like it and would like help us, the creators, download Android version from Google Play store on your native Android device...
you know, Sailfis OS is not the cash machine now but Android could generate us some money, if app becomes visible there...
Some kind of cross promotion... ;)
zlutor ( 2017-12-11 13:12:16 +0200 )edit@kaktux: A lot of people (if not most) have more than one mobile phone.
ossi1967 ( 2017-12-11 14:03:41 +0200 )edit@ossi1967 We have hoped for it... ;) not to mention family members, kids, friends...
Application supports any resolution and formfactors, so tablets also count.
zlutor ( 2017-12-11 14:11:52 +0200 )editI was not able to find the game in Jolla Store... I feel like I'm missing something.
utkarsh ( 2018-04-06 10:07:30 +0200 )edit