- When retrieving the type to display for a given model node, ask its
underlying value node for its corresponding type rather than relying
on the one initially stored in the model, as the latter can change
as a result of typecasts.
- When creating a derived type, adjust the name accordingly to indicate
the additional qualifiers. Fixes a problem where casted type names would be
displayed as their base type only, even if they included pointers or array
subscripts.
It's ther that the view background color is inherited from the parent.
Fix option popups having a white background eg. in MediaPlayer
preferences.
Thanks to DeadYak for noticing the problem.
In some locales the title is longer than the space there is for it. Make
sure the boxes are wide enough for the title to display completely.
Fixes#11611.
- Add missing if/else keywords.
- Add missing comma that was preventing some keywords from being
recognized properly.
- Add missing handling of condition operator.
SourceLanguage and friends:
- Remove ParseTypeExpression from SourceLanguage, as its functionality
can now properly be subsumed by the general expression parser, and
simply becomes another result type thereof.
CLanguageFamily/CLanguage/CppLanguage:
- Remove IsModifierValid() hook, as this is all now handled internally
in the expression parser.
VariablesView:
- Refactor to handle typecast requests via expression evaluation. Since
this is done asynchronously, rework the logic to handle recognizing
expression evaluation results that correspond to a requested cast,
and handle accordingly.
- Remove handling of the power token, as it's not actually valid C/C++ syntax,
and causes problems when parsing more complex pointer types/dereferences.
SourceLanguage/CLanguageFamily/ExpressionEvaluationJob:
- Add TeamTypeInformation parameter to EvaluateExpression() hook. Adjust
implementing subclasses and callers accordingly.
CLanguageExpressionEvaluator:
- Add class InternalVariableID for representing intermediate variables
generated while parsing an expression.
- When parsing an identifier, if we were passed in a type information object,
then first attempt to resolve the name as a type. If not matched, then fall
through to attempting to match it to a value node as before.
- When parsing an atom, check if it resulted in a type. If it did, and there
still remains more of the expression to parse, then parse the result to see
what value/variable to try to apply the typecast to. If the result is a
primitive, generate an appropriate internal variable + value node child for
it, otherwise use the target variable's child. Then, attempt to typecast it
as requested.
- Simplify _EatToken().
- If the final result of an expression is a type, configure the result object
accordingly.
As a result of all the above, an expression can now resolve to a type, allowing
the evaluator to take over the duties of parsing the desired type for a typecast
request in the variables view, and in addition, expressions themselves can now
contain typecasts, which opens up quite a few new possibilities.
- Properly differentiate the size of a parsed hex constant in order
to return a correspondingly sized primitive, rather than always
returning as 64-bit.
- For simply looking up a type, we need neither the register map, nor
the target interface, as those are only necessary for resolution of
values and/or locations.
- Fix memory leak. A reference to the target interface was acquired in
the type context's ctor, but not correspondingly released in the dtor.
- In addition to a primitive or value node, expressions can potentially
result in types as well. As such, extend ExpressionInfo to be able to
return one, and indicate such a result kind appropriately.
* When the endianness is not intialized, assume B_MEDIA_HOST_ENDIAN.
This is probably what was meant (and this is what Worms Armageddon
means).
* Move creation of the media nodes back to the initialisation instead of
StartPlaying, otherwise an extra node is created each time the sound is
played.
* Use a template to avoid repeating the panning code for each type
* Rearrange the initialization of BSimpleGameSound so the data is only
copied 0 or 1 times (it was copied 2 or 3 times in some cases) between
the passed buffer and the final one,
* Don't execute the panning code on streams with only 1 channel as this
makes no sense and it will read and write outside the buffers
* Abort early in GameSoundBuffer::Play if fIsPlaying is false.
Fix the crashes in Worms Armageddon. Doesn't fix the sounds being mostly
white noise.
Fixes#4078.
When font hinting is disabled, the width of a string may not be an
integer number of pixels. This results in the tab position also being
non-integer, and the drawing code doesn't handle this, resulting in part
of the tab being shifted 1px to the right.
Snap the rectangle to the pixel grid so the runding error doesn't
happen.
* Fixes#3970 without introducing the bugs from BeOS
* Makes it easy to override BStringItem just to change the text color.
* Makes it easy to implement custom list items using the correct colors.
* This shows the problem in Haiku, it is not easily possible to change the
color of BStringItem.
* It also shows that the BeOS implementation doesn't restore the view
state after drawing items, so the last item in the list also draws
green, and selecting the first also makes it green.
Instead of showing plain red, green and blue color ramps, show what
the color would be if you moved the sliders to each point.
This is what was done on Mac OS classic and is also used in some other
tools to help you targetting a particular color.
It also limits the need for a color preview, which BColorControl
currently doesn't include, forcing apps to implement one themselves.
Fixes#3790 (the patch there didn't apply anymore, so I redid the work.
Credits for the change should go to stpere).
According to Colin this is not supposed to happen, but it does. Since
the affected video otherwise decodes just fine, I think it is safe to
disable the assert and not annoy our users.
Fixes#11409.
* The APE SDK can only decode rather big chunks at a time (several
seconds), so our reader keeps an internal buffer of the last decoded
chunk.
* However, this was always dropped when seeking, meaning the same few
seconds of sound were decoded again and again.
* I'm not sure why MediaPlayer is trying to seek to the position it
already is at, but we can make it work, so why not.
Now the existing buffer is reused if possible when seeking. This makes
it possible to play APE files in MediaPlayer.
Also, several more style fixes.
Signed-off-by: Adrien Destugues <pulkomandy@gmail.com>
GCI2014, Fixes#6783.
* The "Mount All" Tracker menu only mounted partitions, not disks filled
directly with a filesystem.
This makes it possible to %include local files. nasm doesn't allow this
otherwise (include paths are assumed relative to the working directory).
Fixes build of ape_reader.
This change was introduced by Colin for DVB-T support, however it also
breaks the timing of several MP4 files. The code is incomplete and
computes slightly to very wrong frame rates (one video plays about twice
as fast as needed, another one attempts to play at 30000 FPS).
I suspect similar problems would be found when changing the frame rate
in DVB-T streams in the same way, so I'm disabling this code for now
until a correct solution is found or we manage to use a newer version of
ffmpeg (where there is an actual framerate field in the format and it
doesn't need to be derived from the time_base anymore).
This restores the previous behavior of computing the framerate at the
AVFormatReader level, that is, once per stream, rather than once per
frame. At the stream level we have enough data to compute an "average"
frame rate, and there is also an "r_frame_rate" (real frame rate) which
may be usable for this. Not having working DVB-T hardware to experiment
with that yet, I'll leave it to others.
Fixes#11283 and the last remaining problem in #4512.
* Also known as the YUV9 FourCC and used in SVQ1 (early QuickTime)
videos.
* Fixes part of #4512 (one more video played correctly) and replay of
all old Quicktime videos when you don't have overlay support.