Preparation for further scenarios when memory allocation failure
can happen and we'll need to use fallback when possible.
Memory allocation can fail in following cases:
- when non-forced memory allocation used and the attempt to allocate
the memory must be as fast as possible, without waits
- when forced memory allocation used, but the driver already received
stop command and waits for thread termination. Note that in case
the VSync control is enabled stop command may happen even after the video
subsystem executes switch to VGA mode. In such case QEMU will not return
previously allocated objects (assuming the QXL driver already disabled
and ignoring callbacks from Spice server in VGA mode).
In case of forced memory allocation the allocation routine waits
unpredictable time until the request is satisfied. In current commit
we do not acquire m_MemLock mutex for all this time, but release it
when entering long wait to allow another caller to try allocating memory.
Signed-off-by: Yuri Benditovich <yuri.benditovich@daynix.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>