-
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Kernel: Tickless #104
Labels
Comments
ebanner
added a commit
to ebanner/serenity
that referenced
this issue
Feb 7, 2023
# This is the 1st commit message: HexEditor: Will this resolve merge conflicts? # This is the commit message #2: Browser: Disallow empty URLs in the bookmark editor When an empty URL is given to `BookmarkEditor`, it will now disable the button that saves the bookmark change since an empty URL is an invalid URL. # This is the commit message #3: Kernel: Change the way we call a syscall in signal_trampoline_dummy The function signal_trampoline_dummy was using int 0x82 to call SC_sigreturn. Since x86 is no longer supported, the correct way to call a syscall is using the syscall instruction. This paves the way to remove the syscall trap handling mechanism. # This is the commit message SerenityOS#4: Kernel: Remove trap based syscall handling This patch removes the x86 mechanism for calling syscalls, favoring the more modern syscall instruction. It also moves architecture dependent code from functions that are meant to be architecture agnostic therefore paving the way for adding more architectures. # This is the commit message SerenityOS#5: Documentation: Add troubleshooting note regarding KVM GDB # This is the commit message SerenityOS#6: Kernel: Fix a long-standing problem with GMBus in Intel Grahpics code Thanks to Andrew Kaster, which gave a review back in October, about a big PR I opened (SerenityOS#15502), I managed to figure out why we always had a problem with the first byte being read into the EDID buffer with the GMBus code. It turns out that this simple invalid cast was making the entire problem and using the correct AK::Array::data() method fixed this notorious long standing problem for good. # This is the commit message SerenityOS#7: Kernel: Split I2C functionality from IntelNativeDisplayConnector code Splitting the I2C-related code lets the DisplayConnector code to utilize I2C operations without caring about the specific details of the hardware and allow future expansion of the driver to other newer generations sharing the same GMBus code. We should require a timeout for GMBus operations always, because faulty hardware could let us just spin forever. Also, if nothing is listening to the bus (which should result in a NAK), we could also spin forever. # This is the commit message SerenityOS#8: Kernel/Graphics: Export DDC I2C address definition to global header file # This is the commit message SerenityOS#9: SQLServer: Unveil /etc/passwd This is now required to launch the SQLServer for Browser (without this it now fails to launch). # This is the commit message SerenityOS#10: LibGUI: Add allowed file extensions to FileSystemModel This allows FileSystemModel to take an optional list of allowed file extensions which it will use to filter out all files that don't end with that file extension. The file extensions are set via `set_allowed_file_extensions` which has a coresponding `get_allowed_file_extensions`. # This is the commit message SerenityOS#11: LibGUI: Add allowed file types to FilePicker This patch adds a ComboBox to `FilePicker` where the user can select which file types to show, all files that doesn't have an extension that's in the selected file type will be hidden. When creating a FilePicker with `FilePicker::construct` or `FilePicker::get_open_filepath`, allowed file types can be specified as the last argument. If no file types are provided then there will be no visual change in the GUI. 'All Files' and 'Image Files' have shorthands with `GUI::FileTypeFilter::all_files()` and `GUI::FileTypeFilter::image_files()`, respectively. # This is the commit message SerenityOS#12: DisplaySettings: Made select wallpaper use allowed file types # This is the commit message SerenityOS#13: Ladybird: Left-align long url in address bar Previously when there was a very long url that spanned outside of the address bar, the text shown would be the one starting from the very end of the url instead of from the beginning, so you would be seeing the query parameters for example, instead of the domain. # This is the commit message SerenityOS#14: LibJS: Format the era of ISO year 0 as BC This is a normative change in the ECMA-402 spec. See: tc39/ecma402@2034315 # This is the commit message SerenityOS#15: LibGUI: Don't hard-code TreeView row height Instead of overriding AbstractTableView::row_height() and returning a hard-coded height for some reason, just remove the override. This makes tree view row heights honor the current font size. # This is the commit message SerenityOS#16: LibGUI: Invalidate IconView cache on font change Changing the font means we have to recalculate all the item rects etc. # This is the commit message SerenityOS#17: LibGUI: Relayout Breadcrumbbar on font change # This is the commit message SerenityOS#18: LibGUI: Make Tray item height honor the current font size # This is the commit message SerenityOS#19: LibWeb: Restore handling of the serenity:ladybird/headless capability This was refactored a bit incorrectly in d8fde14. # This is the commit message SerenityOS#20: Ladybird: Abstract spawning helper processes into separate methods This will let us use the same path discovery methods for WebContent, SQLServer, and any other helper processes we need to launch. # This is the commit message SerenityOS#21: LibSQL+Ladybird: Accept a list of paths for spawning SQLServer in Lagom Use the new get_paths_for_helper_process method in Ladybird to query Qt for the runtime path of the current executable as well as the build directory paths. # This is the commit message SerenityOS#22: Meta+CI: Disable Ladybird for fuzzer, compiler explorer and Android And move it after the declaration of headless-browser, since WebDriver depends on headless-browser. # This is the commit message SerenityOS#23: Ladybird: Clean up install rules for executables Use a list of executables to make sure that we don't miss any of the applications used by Ladybird and its friends like WebDriver, and make sure to install include all executables and their runtime dependencies. # This is the commit message SerenityOS#24: Ladybird: Spawn ladybird and headless-browser using helpers in WebDriver This allows the WebDriver to take advantage of the common helper process spawning code when launching ladybird, and to not assume a particular directory layout. # This is the commit message SerenityOS#25: Meta: Add Erik Wouters to the contributors list :^) # This is the commit message SerenityOS#26: Meta: Add Rodrigo Tobar to the contributors list :^) # This is the commit message SerenityOS#27: Meta: Add Martin Falisse to the contributors list :^) With a slight delay, but hopefully inserted at the right position for correct historical order. # This is the commit message SerenityOS#28: FileSystemAccessServer: Send correct error code for failed file access When a file cannot be accessed, we currently send errno as the error code. However, there are system calls which occur (by way of dbgln) between the failed file access and accessing errno. This prevents the client-side detection of ENOENT from working. Instead, send over the error we already have stored in the ErrorOr object. # This is the commit message SerenityOS#29: Profiler: Standardize percentage formatting This implements the same percentage formatting for the disassembly and flamegraph views as we have for the profile model. # This is the commit message SerenityOS#30: LibSoftGPU: Make blending simpler and more efficient Previously, we would precalculate "alpha blend factors" on every configuration update and then calculate the source and destination blending factors in one go using all these factors. The idea here was probably that we would get better performance by avoiding branching. However, by measuring blending performance in Quake III, it seems that this simpler version that only calculates the required factors reduces the CPU time spent in `rasterize_triangle` by 3%. As a bonus, `GL_SRC_ALPHA_SATURATE` is now also implemented. # This is the commit message SerenityOS#31: Ports: Add bind mount automatically for Quake3 We need a `wxallowed` bind mount for the `ioquake3` binary to be able to compile and run its executable scripts in memory. Instead of instructing the user how to do so in `/etc/fstab`, we can now use the fancy `/etc/fstab.d` facility :^) # This is the commit message SerenityOS#32: LibSoftGPU: Only enable texture stages if required Copying over every texel (4x`f32x4`) for every texture unit is relatively expensive. By checking if we even need to remember these texel values, we reduce the time spent in `rasterize_triangle` by around 2% as measured in Quake III. # This is the commit message SerenityOS#33: Ports: Install all dependencies instead of just one Commit 9b7e217 broke installation of port dependencies by `return`ing as soon as the first dependency was found. # This is the commit message SerenityOS#34: PixelPaint: Set initial position correctly when using the move tool This fixes an issue, where single clicking in the corner of the image without moving the mouse would cause the layer to jump to the top left corner of the canvas. # This is the commit message SerenityOS#35: PixelPaint: Highlight active layer when using the move tool This commit adds a two color border around the currently selected layer when using the move tool. # This is the commit message SerenityOS#36: PixelPaint: Show resize anchors when using the move tool This commit adds a two color border around areas that the user must drag to resize, when using the move tool. # This is the commit message SerenityOS#37: PixelPaint: Scale move tool resize anchors The areas where the user must click to resize the image are now scaled to ensure they do not overlap. This allows us to display the correct cursor when zoomed out, as well as making the borders look nicer. # This is the commit message SerenityOS#38: LibWeb+LibWebSocket: DOM WebSocket subprotocol support This adds support for WebSocket subprotocols to WebSocket DOM objects, with some necessary plumbing to LibWebSocket and its clients. See the associated pull request for how this was tested. # This is the commit message SerenityOS#39: PixelPaint: Update text tool font color on primary color change # This is the commit message SerenityOS#40: LibWeb: Actually initialize ShadowRoot bindings `mode` and `host` attributes were always undefined. # This is the commit message SerenityOS#41: LibWeb: Make ShadowRoot.mode return ShadowRootMode instead of String # This is the commit message SerenityOS#42: LibWeb: Rename DOM::shadow_root() to shadow_root_internal() The shadowRoot property getter that will be added in subsequent commits has an additional check that checks whether the shadow root is opened. I didn't update the function logic to match with the IDL interface, because it's very likely we don't want that check in the existing code, so that for example closed shadow root elements can still be updated. # This is the commit message SerenityOS#43: LibWeb: Add a helper function for checking if element is a shadow host # This is the commit message SerenityOS#44: LibWeb: Allow to set a root mode value when constructing a ShadowRoot # This is the commit message SerenityOS#45: LibWeb: Implement Element.attachShadow and Element.shadowRoot :^) # This is the commit message SerenityOS#46: Piano: Propagate errors in PlayerWidget Co-authored-by: Sam Atkins <atkinssj@serenityos.org> # This is the commit message SerenityOS#47: LibGUI: Center TreeView item icons vertically This makes tree views with icons look a lot better at larger font sizes. # This is the commit message SerenityOS#48: LibGUI: Merge two loops over the segments in Breadcrummbar::relayout() # This is the commit message SerenityOS#49: LibGUI: Use the correct font when relayouting Breadcrumbbar When the system is broadcasting a "system font changed" notification, the Breadcrumbbar will be notified before its button children. This means that we have to use the Breadcrumbbar's font() for calculations inside Breadcrumbbar as the buttons themselves still have the old font at this point. # This is the commit message SerenityOS#50: LibPDF: Stop storing unicode code points in Encoding In PDF's fonts, encoding objects are used to translate bytes into fonts' glyphs. Glyphs (in the fonts we currently support) organise their glyphs in such a way that they are accessed by name, and thus encoding translate between a byte sequence and a glyph name. Note that an no point this translation includes a Unicode character, and therefore assigning a character to a glyph in the Encoding object is the wrong thing to do. Moreover, using the code point for this character during the byte-sequence-to-glyph translation sequence is double-wrong. This commit removes the characters associated to each translation in the built-in Encoding objects. In order to keep commits short and sweet, I'm currently simply removing the character from the enumeration, leaving the old structure this information was held on intact. Instead, I'm filling the "code_point" member with a zero, and filling both mappings (which will be changed later on too) with the glyph name and the associated char code. # This is the commit message SerenityOS#51: LibPDF: Fix ZapfDingbat's char codes The initial values were fine, but those starting at 100 were wrong: they are all octal values, but since they were missing an initial 0 they were interpreted as decimals. # This is the commit message SerenityOS#52: LibPDF: Stop calculating code points for glyphs When rendering text, a sequence of bytes corresponds to a glyph, but not necessarily to a character. This misunderstanding permeated through the Encoding through to the Font classes, which were all trying to calculate such values. Moreover, this was done only to identify "space" characters/glyphs, which were getting a special treatment (e.g., avoid rendering). Spaces are not special though -- there might be fonts that render something for them -- and thus should not be skipped # This is the commit message SerenityOS#53: LibPDF: Simplify Encoding to align with simple font requirements All "Simple Fonts" in PDF (all but Type0 fonts) have the property that glyphs are selected with single byte character codes. This means that the Encoding objects should use u8 for representing these character codes. Moreover, and as mentioned in a previous commit, there is no need to store the unicode code point associated with a character (which was in turn wrongly associated to a glyph). This commit greatly simplifies the Encoding class. Namely it: * Removes the unnecessary CharDescriptor class. * Changes the internal maps to be u8 -> FlyString and vice-versa, effectively providing two-way lookups. * Adds a new method to set a two-way u8 -> FlyString mapping and uses it in all possible places. * Simplified the creation of Encoding objects. * Changes how the WinAnsi special treatment for bullet points is implemented. # This is the commit message SerenityOS#54: GamesSettings: Rename `Preview` -> `CardGamePreview` # This is the commit message SerenityOS#55: GamesSettings: Make CardSettingsWidget creation fallible # This is the commit message SerenityOS#56: Chess: Stop trying to read non-existent window-size config value Nobody ever sets this, and it doesn't seem especially useful, so let's remove it. # This is the commit message SerenityOS#57: Chess: Move configuration values into the "Games" domain Chess is a game, after all. This makes more sense once we have chess settings in GamesSettings. :^) # This is the commit message SerenityOS#58: Chess: Stop hiding the frame border This `fill_rect()` call was covering the nice border that we just painted a few lines earlier. # This is the commit message SerenityOS#59: Chess: Paint pieces using BilinearBlend instead of NearestNeighbor This makes the pieces look a lot nicer when the window isn't the exactly ideal size. Vector images might be worth pursuing later. # This is the commit message SerenityOS#60: GamesSettings: Add chess settings :^) This adds a tab for configuring the appearance of Chess, along with a preview. # This is the commit message SerenityOS#61: Chess: Automatically update and repaint when the config changes # This is the commit message SerenityOS#62: Chess: Replace 'Style' menu with a link to GamesSettings GamesSettings provides a nicer way of editing these, rather than having them crammed into a menu. # This is the commit message SerenityOS#63: CMake: Set DWARF version before the debug information level Setting the DWARF version after having selected which level of debug information to generate apparently undoes some settings again. Doing the reverse apparently keeps both the version and the debug level setting, resulting in a significantly smaller disk image size. # This is the commit message SerenityOS#64: AK: Return a constant reference from HashMap's constant get() override We cannot return a mutable reference from a constant function. # This is the commit message SerenityOS#65: AK: Ensure string types are actually considered hash-compatible The AnyString concept is currently broken because it checks whether a StringView is constructible from a type T. The StringView constructors, however, only accept constant rvalue references - i.e. `T const&`. This also adds a test to ensure this continues to work. # This is the commit message SerenityOS#66: AK: Define HashMap::take to find and remove a value from the map # This is the commit message SerenityOS#67: WebContent: Remove pending file requests before invoking their callbacks It's currently possible for the callback of a file request to request more file objects. This could cause the hash map storing these requests to be rehashed while one of its callbacks is being invoked. AK::Function explicitly forbids this with an assertion. Instead, remove the callback from the hash map before invoking the callback function. # This is the commit message SerenityOS#68: LibVideo/VP9: Increase the size of summed boolean counts in merge_probs This fixes an issue where probabilities that sum to greater than 255 would wrap and cause the maximum probability adaption to take effect. # This is the commit message SerenityOS#69: LibVideo/VP9: Correct the mode/partition probability adaption counts # This is the commit message SerenityOS#70: LibVideo/VP9: Prevent negation overflow in BitStream::read_s # This is the commit message SerenityOS#71: LibVideo/VP9: Use u32 to store the parsed value counts There were rare cases in which u8 was not large enough for the total count of values read, and increasing this to u32 should have no real effect on performance (hopefully). # This is the commit message SerenityOS#72: LibVideo/VP9: Use proper indices for updating inter_mode probabilities I previously changed it to use the absolute inter-prediction mode values instead of the ones relative to NearestMv. That caused the probability adaption to take invalid indices from the counts and broke certain videos. Now it will just convert to the PredictionMode enum when returning from parse_inter_mode, which allows us to still use it the same as before. # This is the commit message SerenityOS#73: Ladybird: Design settings layout in horizontal # This is the commit message SerenityOS#74: Ladybird: Add setting for page to open on new tab # This is the commit message SerenityOS#75: Ladybird: Set fixed height for Settings # This is the commit message SerenityOS#76: Utilities/arp: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#77: Utilities/df: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#78: Utilities/fortune: Replace uses of JsonObject::get_deprecated()/get_ptr # This is the commit message SerenityOS#79: Utilities/ifconfig: Replace uses of JsonObject::get_deprecated()/get_ptr # This is the commit message SerenityOS#80: Utilities/json: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#81: Utilities/lscpu: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#82: Utilities/lsirq: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#83: Utilities/lsjails: Replace uses of JsonObject::get_deprecated()/get_ptr # This is the commit message SerenityOS#84: Utilities/lsof: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#85: Utilities/lsusb: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#86: Utilities/mount: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#87: Utilities/netstat: Replace uses of JsonObject::get_deprecated()/get_ptr # This is the commit message SerenityOS#88: Utilities/pmap: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#89: Utilities/route: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#90: Utilities/w: Replace uses of JsonObject::get_deprecated()/get_ptr() # This is the commit message SerenityOS#91: AK: Remove JsonObject::get_deprecated() and ::get_ptr() :^) # This is the commit message SerenityOS#92: Settings: Change initial window size to fit the current content Previously, it would open with a scrollbar visible which felt a little silly. :^) # This is the commit message SerenityOS#93: LibWeb: Parse font-stretch CSS property # This is the commit message SerenityOS#94: Base: Add British English Apple Macintosh keymap Full support for EN-GB Mac Laptop and Magic Keyboards # This is the commit message SerenityOS#95: Kernel: Fix usermode verification in ptrace with PT_SETREGS When doing PT_SETREGS, we want to verify that the debugged thread is executing in usermode. b2f7ccf refactored things and flipped the relevant check around, which broke things that use PT_SETREGS (for example, stepping over breakpoints with sdb). # This is the commit message SerenityOS#96: AK: Implement the quick select algorithm as AK::quickselect_inplace This adds the quick select algorithm that finds the kth smallest element for any collection. Whilst doing so it also partially sorts the collection. I have also included the option to use different pivoting functions including median of medians which makes the quick select have a truely linear time complexity at the costs of enormous overhead, so this that only really useful for really large datasets. The same was chosen to reflect the fact that it modifies the collection in place during the selection process. # This is the commit message SerenityOS#97: AK: Testing for `AK::quickselect_inline` The testing code found here is mainly derived from the Tests for `AK::quick_sort`. # This is the commit message SerenityOS#98: AK: Use `AK:quickselect_inline` to compute `AK::Statistics::median` Quick select is an algorithm that is able to find the median of a Vector without fully sorting it. This replaces the old very naive implementation for `AK::Statistics::median()` with `AK::quickselect_inline` # This is the commit message SerenityOS#99: AK: Add thresholds to `quickselect_inline` and `Statistics::Median` I did a bit of Profiling and made the quickselect and median algorithms use the best of option for the respective input size. # This is the commit message SerenityOS#100: SystemServer: Propagate errors properly in the main code To do this properly, we also create Strings with formatting of device nodes' names, taking into consideration errors when doing that. Also, we use LibCore System mknod method instead of raw LibC functions to be able to propagate errors from these calls too. # This is the commit message SerenityOS#101: grep: Port to `Core::Stream` It also adds support for `ErrorOr` in one lambda. # This is the commit message SerenityOS#102: TextEditor: Port to `Core::Stream` # This is the commit message SerenityOS#103: TextEditor: Use `request_file_read_only_approved` for the drop event This allows TextEditor to open the file without asking for user consent. # This is the commit message SerenityOS#104: TextEditor: Propagate errors from `read_file()` # This is the commit message SerenityOS#105: Kernel/aarch64: Include Error.h to fix aarch64 missing ErrorOr # This is the commit message SerenityOS#106: LibSQL: Store selected column names in the results for SELECT statements # This is the commit message SerenityOS#107: LibSQL+Userland: Pass SQL IPC results to clients in a structure SQLClient exists as a wrapper around SQL IPC to provide a bit friendlier interface for clients to deal with. Though right now, it mostly forwards values as-is from IPC to the clients. This makes it a bit verbose to add values to IPC responses, as we then have to add it to the callbacks used by all clients. It's also a bit confusing seeing a sea of "auto" as the parameter types for these callbacks. This patch moves these response values to named structures instead. This will allow adding values without needing to simultaneously update all clients. We can then separately handle the new values in interested clients only. # This is the commit message SerenityOS#108: LibSQL+SQLServer: Send result column names over IPC to SQL clients # This is the commit message SerenityOS#109: SQLStudio: Separate the script and results tabs with a vertical splitter # This is the commit message SerenityOS#110: SQLStudio: Display real column names in the results tab # This is the commit message SerenityOS#111: LibWeb: Fix typo and use auto where possible # This is the commit message SerenityOS#112: Meta: Register CanvasPattern as a platform object # This is the commit message SerenityOS#113: LibWeb: Implement CanvasRenderingContext2D.createPattern() This is a first pass at implementing CRC2D.createPattern() and the associated CanvasPattern object. This implementation only works for a few of the required image sources [like CRC2D.drawImage()], and does not yet support transforms. Other than that it supports everything else (which is mainly the various repeat modes). # This is the commit message SerenityOS#114: Base: Add a test page for canvas patterns # This is the commit message SerenityOS#115: SpaceAnalyzer: Extract ProgressWindow into its own class # This is the commit message SerenityOS#116: SpaceAnalyzer: Propagate more errors # This is the commit message SerenityOS#117: SpaceAnalyzer: Make TreeMapWidget responsible for filesystem analysis Also, the Tree object was only ever used by the TreeMapWidget, so its creation can happen inside `analyze()`, fixing the memory leak issue. Plus, it doesn't have to be RefCounted. # This is the commit message SerenityOS#118: SpaceAnalyzer: Give the Analyze action an icon and F5 shortcut This action is basically equivalent to "Refresh", so let's use the common shortcut for that. # This is the commit message SerenityOS#119: SpaceAnalyzer: Rename `TreeMapWidget::m_path` -> `m_path_segments` This is clearer to me at least. # This is the commit message SerenityOS#120: SpaceAnalyzer: Stop treating selecting a node as a path change This served no obvious purpose, but did make the breadcrumb bar change confusingly. # This is the commit message SerenityOS#121: SpaceAnalyzer: Rename widget variables to match code style # This is the commit message SerenityOS#122: Base: Fix typo of MasterWrod.af MasterWrod.af becomes MasterWord.af - too small a change? # This is the commit message SerenityOS#123: Base: Add more emoji 🤳 - U+1F933 SELFIE 🏄 - U+1F3C4 PERSON SURFING 🏄♂️ - U+1F3C4 U+200D U+2642 MAN SURFING 🏄♀️ - U+1F3C4 U+200D U+2640 WOMAN SURFING 🥋 - U+1F94B MARTIAL ARTS UNIFORM 🚭 - U+1F6AD NO SMOKING 📴 - U+1F4F4 MOBILE PHONE OFF # This is the commit message SerenityOS#124: Chess+GamesSettings: Use the correct term for chess squares "Square" is the technical term, so let's use it. :^) Also, stop using size_t for pixel sizes, that's not what that means. # This is the commit message SerenityOS#125: Chess+GamesSettings: Give chess pieces some breathing room Draw pieces around 80% of the size of a square, instead of 100%, so that there is a nice gap around them. This feels more comfy, and makes it actually possible to read the coordinates while a piece is on their square. # This is the commit message SerenityOS#126: Base: Delete the "test" chess piece set We have several nice sets to choose from now, and so we no longer need this one, which is "ugly" even according to its original author. ;^) # This is the commit message SerenityOS#127: LibPDF: Fix clipping of painting operations While the clipping logic was correct (current v/s new clipping path), the clipping path contents weren't. This commit fixed that. We calculate the clipping path in two places: when we set it to be the whole page at graphics state creation time, and when we perform clipping path intersection to calculate a new clipping path. The clipping path is then used to limit painting by passing it to the painter (more precisely, but passing its bounding box to the painter, as the latter doesn't support arbitrary path clipping). For this last point the clipping path must be in device coordinates. There was however a mix of coordinate systems involved in the creation, update and usage of the clipping path: * The initial values of the path (i.e., the whole page) were in user coordinates. * Clipping path intersection was performed against m_current_path, which is in device coordinates. * To perform the clipping operation, the current clipping path was assumed to be in user coordinates. This mix resulted in the clipping not working correctly depending on the zoom level at which one visualised a page. This commit fixes the issue by always keeping track of the clipping path in device coordinates. This means that the initial full-page contents are now converted to device coordinates before putting them in the graphics state, and that no mapping is performed when applied the clipping to the painter. # This is the commit message SerenityOS#128: Documentation: Reorganize Ladybird build docs to put easy path first Instead of explaining custom build directories first and then following that up with a an explainer that Meta/serenity.sh is the easiest way to get the browser up and running to try it out was not very ergonmic. Also reorganize some of the per-distro documentation to put the compiler requirements front and center. # This is the commit message SerenityOS#129: Kernel+SystemServer+Base: Introduce the RAMFS filesystem This filesystem is based on the code of the long-lived TmpFS. It differs from that filesystem in one keypoint - its root inode doesn't have a sticky bit on it. Therefore, we mount it on /dev, to ensure only root can modify files on that directory. In addition to that, /tmp is mounted directly in the SystemServer main (start) code, so it's no longer specified in the fstab file. We ensure that /tmp has a sticky bit and has the value 0777 for root directory permissions, which is certainly a special case when using RAM-backed (and in general other) filesystems. Because of these 2 changes, it's no longer needed to maintain the TmpFS filesystem, hence it's removed (renamed to RAMFS), because the RAMFS represents the purpose of this filesystem in a much better way - it relies on being backed by RAM "storage", and therefore it's easy to conclude it's temporary and volatile, so its content is gone on either system shutdown or unmounting of the filesystem. # This is the commit message SerenityOS#130: Documentation: Add formatting section to nvim documenation # This is the commit message SerenityOS#131: Lagom/ConfigureComponents: Run cmake command last Previously the tool was removing the Root directory after configuring cmake which was breaking the build, as some cmake rules put some necessary files there. Moving the cmake command to be the last one makes it regenerate those files automatically. :^) # This is the commit message SerenityOS#132: CMake: Don't require to install glapi.h to system This failed when a current build configuration hadn't got any program depending on LibGL. # This is the commit message SerenityOS#133: Utilities: Rename special target binaries only if they exist Before 6490529, all programs in the SPECIAL_TARGETS list were built because they didn't have an EXCLUDE_FROM_ALL property set. That commit set the property for all targets, but because of this, the minimal "Required" build configuration no longer built, as CMake failed to rename every special target. Even the not built ones. This commit makes the rename action run only if the executable exists, which makes us build Serenity without the `install` utility, and also by using the minimal configuration set. :^) :^) # This is the commit message SerenityOS#134: Base: Add a quote to the fortunes database t.how.does.it.even.workis /shrug # This is the commit message SerenityOS#135: AK: Use constexpr instead of consteval on OpenBSD # This is the commit message SerenityOS#136: HexEditor: Add a default move constructor to `HexDocumentFile` # This is the commit message SerenityOS#137: HexEditor: Use the constructor pattern
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Currently the kernel wakes up 1000 times/sec to increment the system timer.
It would be cool if we could instead compute when the next necessary wakeup would be, and then sleep for that long instead.
The text was updated successfully, but these errors were encountered: