Uses Mixer's setRate() function implemented in pr #4965 to set
video playback rates of movies that are not 0 or 1.
`undome` of 'mediaband' required this feature where the video can
have playback rates other than 0 or 1.
This fixes the issue where the widget would not update when executing
lingo that depends upon state of widget itself, by periodically calling
updateWidgets() from inside lingo execution ie Lingo::execute().
Identified in `undome` of 'mediaband-win' lingo, where lingo was continuously
executed until the video inside digitalVideoCast was not being finished,
while the video update depended upon Score::update() for next frame render,
this resulted in a deadlock sitation where the widget would not update
and the lingo would keep executing.
The theme layout padding values are parsed and stored as 16 bit
signed integers. However ThemeLayout::setPadding treated the
values as 8 bit signed integeres.
The padding values parsed from the STX file suited for the screen
resolution are multiplied with the device content scale factor.
The scale factor determines how content is mapped from the logical
coordinate space (measured in points) to the device coordinate
space (measured in pixels).
If the scale factor and the padding value results in a value
greater than 255 it will wrap since the 8 bit type can't hold
bigger values than that.
Running the iOS backend in debug configuration on an iPhone 12
mini, having the content scale factor value 3, and drawing the
launcher in vertical mode where the bottom padding value is 92,
the result became 3 * 92 = 276 which would wrap to 20.
That resulted in incorrect layout where the GameList was too
high and the buttons in the bottom would not fit on the screen.
Change the input type to int16 in ThemeLayout::setPadding to
conform with the padding type used everywhere else.
The stream becomes owned by the Archive as soon as openStream()
is called, so freeing the Archive object also frees the stream.
Trying to delete it a second time will blow up.
GOG has not included the AdLib instruments file with their release of Simon the
Sorcerer 1 DOS version. The game would not start in ScummVM when this file was
missing and AdLib was selected. Added a fallback to the generic AdLib driver
with built-in instruments.