- The Debugger app now accepts a message asking it to start a new team.
It attempts to do so given the path and arguments, and passes the
result back to the sender if desired.
Only AttachScrollers() and scroll if B_ITEMS_IN_COLUMN because if not we don't
support scrolling anyway. Also, rename superpoint variable to superPoint.
When reaching the next node the current key should be set to the next
valid index within that node (0 for forward and NumKeys() - 1 for
backward). This did not cause any harm as BFS uses forward traversal
only.
* Respect device's declared max packet size.
This improve support of USB midi controlers which don't support
arbitrary bulk read size, like iCON ones.
* Fix an logic inversion regarding O_RDONLY/O_WRONLY
and output or input ports only devices.
In the fallback case where full debug information is unavailable,
query the underlying DWARF file to see if CFI is available at all.
If it isn't, skip creating function debug info objects.
...to also take the list of symbols in the image as a parameter.
This allows us to prefetch the symbols once in
ImageInfo::FinishInit() for each image and then let each specific info
subclass use them if/as needed, rather than having to do the entire
symbol lookup/sort twice for every image.
- Adjust callers accordingly.
* Set its type to B_MODAL_WINDO, and also set B_NOT_MOVABLE
* Since this removes the window tab, add an "Ok" button to close the window
* Remove the GetWindow mess and just use it as any regular window
* Adjust all callers again
The AlertPosition method doesn't seem to work right, the window pops up
offset to the right. I also noticed that some of our calls to BAboutWindow
are actually not reacable because we removed Abutrequested from the apps.
Maybe we should clean them up (locale preflet and activity monitor are examples)
More annoying is the fact that opening a modal window from a deskbar replicant
is modal against the whole deskbar. Not sure what to do about that.
- debug_create_symbol_lookup_context() now takes an image ID
parameter that can optionally be used to restrict the symbols
it gathers to only those of the targeted image rather than the
entire team, allowing for significantly more lightweight usage
when the desired image is known. The previous behavior can still
be obtained if desired by passing -1 as said ID.
- Adjust callers.
... back to their previous void returning roles. AlertPosition() is used instead to
check that an alert fits within the sides of the screen and all that.
Also add another CenterOnScreen() method that takes a Screen ID
so you can center a window on another monitor that the one it is currently on
(theoretically someday anyway).
...to position alert's and open/save dialogs nicely inside of the parent window,
or if that is unavailable, the screen frame.
AlertPosition() is private (for now) but BAlert and BFilePanel are BWindow's friends so
BWindow allows those classes to touch it's privates.
BAboutWindow returned false in QuitRequested in order to hide instead of closing.
Not only this keeps a BLooper running for a rarely used window, but it also
prevents quitting an application in the window was not destroyed first.
* Remove aforementioned QuitRequested method,
* Add a static GetWindow method that returns the existing about window, if there
is one, or creates one if there is not. A boolean can be set to tell the caller
what happened,
* Adjust all callers to use that new method, instead of managing the window themselves.
If attribute mode and you select a mime type, Remove then add the rows first
with the first items marked, then go through and re-mark the selected item.
* warnings about comparison between signed and unsigned integer expressions.
* the use of max_c() was superflous anyway as the result is only used for a comparison
with the left value.
* GCC lets us use a const reference to a temporary, but using it after it disappeared
is incorrect.
* reverts hrev45576 as this patch seems more correct.
* Use font relative insets and spacing for window.
* Make the input box for Integration Time more reasonably sized and right
align the label.
* Make the Install replicant into Deskbar button flush right.
* Use the standard amount of space between the Defaults and Revert buttons.
This bug occured when you selected from the mime type menu field while in
attribute mode. The rows are removed and added again but the condition string
view was left out because the menu item wasn't marked yet. Reordered to remove
row, then set marked, then add row checking if marked and adding the condition
string view based on the marked mime type. If no mime types are set it uses the
first mimetype instead which is what we want in that case.
The save panel adjustment has been kept and modified a bit to position the
window nicely. It too uses the BWindow::CenterIn() method that adjusts based
on the screen edges.
BAlert::AlertPosition() has been superceded by the new BWindow method and should
be considered deprecated. Note that the alert position is not in the direct center of the
screen, it is offset vertically like before.
* These methods now return the new point after centering.
* But more importantly CenterIn() does some new adjustments to keep the window
position inside the screen edge. If you pass the screen frame into CenterIn()
it skips these adjustments.
* moved the inlined BRect constructor of IntRect to the cpp file. GCC will inline the method
anyway.
* impacted methods were both AGGTextRenderer::RenderString() in
src/servers/app/drawing/Painter/AGGTextRenderer.cpp, calling the StringRenderer constructor
with a BRect reference.
* unless someone comes up with an explanation, I'll try to come with a smaller testcase to
submit this problem upstream.
Return as many dirents as fit into the provided buffer. The readdir()
implementation in libroot tries to get many dirents and caches them to
reduce the amount of syscalls and the associated overhead.
This reduces the syscall count dramatically for use cases where a lot
of directories are enumerated. A "git status" on a Haiku repository for
example goes from over 50k read dir syscalls down to just under 7k.
The performance gain is only around a moderate 5% in that use case
though.
This usually wasn't a problem as the key buffer is generally large
enough to hold a single value. Still on short buffers or very long
it could have silently overrun before.
This replaces waiting a fixed time of 300ms for the device power to
stabilize. In the ideal case this reduces the boot time by 200ms per
connected device (including internal hubs).
This is very similar to what Linux implements and we use the same time
values. An interval of 25ms is used to check for connection state
changes, the stable time is at least 100ms as per the USB specs and the
whole process times out after 1.5 seconds.
- Sometimes the return type doesn't appear to have a
an associated byte size attribute. If so, simply
revert to using the architecture's register width,
since at least empirically all such cases appear
to be primitive types that fit into one anyways.
- If a node was already expanded, and we then removed/replaced
its children, those wouldn't automatically get their value nodes
added. Consequently, value retrieval for them would fail until
the parent was collapsed/re-expanded. If we encounter such a
model node when receiving a value request, notify the table model so
it can construct the value node appropriately.
- When removing a value node in response to ValueNodeChildrenDeleted,
we need to recurse down and ensure that each node's children are
likewise notified/removed. Otherwise we end up with deleted child
nodes in the node table, which in turn led to potential crashes when
either adjusting a node's type and/or its visible array range.
- Objects that act as ranged containers now expose a menu option
which allows the user to input a comma-separated list of ranges to
show. These need not be contiguous, ergo one can show only
the first and last elements of an array, or some random set of
indices in the middle as well.
* For some reason the code in acpi_processor_init() assumed that the
CPU index returned by ACPI was 1-based. On my machines it is 0-based
and the syslogs on Trac from the last months don't show any
exception. The code even contained a hack to force satisifying that
assumption for a single-CPU machine.
* Instead of calling intel_cpuidle_init()/acpi_cpuidle_init() when
initializing the driver for the device node for CPU 0 -- thus
depending on the order the device manager iterates through the CPU
device nodes -- rather check whether all CPU nodes have indeed been
encountered.
* acpi_cpuidle_init_driver(): Don't leak the cookie in error case.
* acpi_cpuidle_uninit_driver(): Clear the sAcpiProcessor element for
the uninitialized CPU node. We'd also have to unregister the idle
callback when acpi_cpuidle_uninit_driver() is called for the first
CPU device node, but there isn't any API for it ATM.
Fixes a crash on machines with multiple CPUs where acpi_cpuidle_setup()
wouldn't already fail early (apparently only mine).
Casting the difference of the two off_t values to size_t may truncate
the result. Doing so before the comparison will therefore break it.
Instead cast the size to off_t to get around the signed versus unsigned
integer expression comparison and then cast the result of the comparison
to size_t again. Should fix#9714.
This reverts commit f7176b0ee5. Citing Ingo:
"off_t is the correct type to use for addressing pages in a cache/file,
which page_num_t should only be used for physical pages." I'll see how to
fix the GCC 4.7 warnings differently :)
* GCC 4.7 warning: narrowing conversion of '(int)(((ColorPickerView*)this)->ColorPickerView::r * 2.55e+2f)'
from 'int' to 'uint8 {aka unsigned char}' inside { } is ill-formed in C++11 [-Werror=narrowing]
* error message: error: cannot bind packed field
'args->kernel_args::platform_args.platform_kernel_args::apm' to 'apm_info&'
* the reason would be that the reference doesn't have alignment information anymore.
* changed the reference to const for read access, and use the long form for setting a field.
- If the given type had no modifiers specified, the base type string
wasn't being moved out of the input buffer, leading to it mistakenly
being parsed as a modifier. This would result in errors for simple
cases such as a cast to size_t. Thanks Axel for reporting.
- Make GetToolTipInfo() sensitive to the column being hovered over.
If hovering over the variable name, we display its value location
information as before. However, if hovering over the value column,
the tooltip now displays the full value of the variable, if
available.
- Areas, images and semaphores are now presented in a more readable
tabular format.
- Areas: Columns now include base address, end address and size to
make it easier to determine if e.g. an address easily falls within
a given area, and are also sorted by base address. Protection flags
and locking have been made more concise, with a corresponding key.
Name has been moved to the last column to allow for a more compact
format.
- Images: Name moved to last column for improved column formatting,
purposes, and sorted by load address.
- Threads are now sorted such that all threads in exception states
come at the tail end of the list, and the format has been revised
to make them a bit easier to parse. State is only indicated if
something other than running, along with any available exception
state messages.
- Instead of implicitly registering and unregistering a service
instance on construction/destruction, DefaultNotificationService
now exports explicit Register()/Unregister() calls, which subclasses
are expected to call when they're ready.
- Adjust all implementing subclasses. Resolves an issue with deadlocks
when booting a DEBUG=1 build.
Use BNetworkDevice instead of using the driver settings api to get the
associated wireless network.
Also got rid of Settings::_PrepareRequest(), since it's no longer needed.
- Rename the current RangeSetting -> BoundedSetting and add an
appropriate setting type enum, since that one actually describes
a single value clamped to a range, rather than an actual range.
- Add RangeSetting class that has both a lower/upper bound and a pair
of values representing the lower and upper ends of the range currently
selected.
- Add several new optional hook functions to ValueNode. These
allow implementing subclasses to specify that they're a container
type that can export a range of items (i.e. arrays, lists, etc.),
and expose several operations on said ranges of child items.
Use BNetworkInterface and BNetworkInterfaceAddress in the Settings class
instead of using ioctls. This works for everything except the default
route, for which there is no API yet.
* Fix GB18030 Chinese encoding support for two and four bytes long
characters. This finally resolves issue described in #6227;
* Processing of multi-byte characters was slightly refactored too;
* Remove the multi-byte 94/96 graphsets designation support for
Japanese encodings. That looks like MuTerm rudiment, it had incomplete
implementation and looked like abandoned. On the other hand multi-byte
designation must be implemented in the same way as designation for
single-byte graphsets was done. Note that this multi-byte graphsets
designation has nothing to do with the normal encoding support for
usual data flow conversion - so you will be on the safe side when
use terminal encoding menu switch.
The removed feature is the ancient technique to achieve different charsets
support on 8-bit serial lines by assigning (designating) predefined
sets of characters to G0, G1, G2 and G3 and selecting them during
program life-time into GL (x20-x07E) or GR (xA0-xFF) areas by using LS
or SS functions.
For example xterm has no support for designation multi-byte graphsets
at all. Anyway if this feature is required and you can provide the
test environment - please let me know and I will be glad to implement
this feature in more easy and consistent way;
* Remove unreferenced gSmbcsTable and gScsTable parsing tables that
looks like is not used anymore;
* Remove gCS96GroundTable and gMbcsTable parsing tables that were used
by multi-byte 94/96 Japanese graphsets support and now obsoleted by
removing mentioned feature;
* Remove some obsoleted #defines, like HW statusline support for
example, from parse tables definition.
- Factored out CppLanguage::ParseTypeExpression() into one that could
be used in CLanguageFamily, with some hooks to help differentiate
what's allowed in C vs C++. Makes the type parsing available for
C files as well, and consequently allows typecasting to work for
those.