- Mar 15, 2019
-
-
bunnei authored
-
- Mar 13, 2019
-
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
Mat M authored
Co-Authored-By:
ReinUsesLisp <reinuseslisp@airmail.cc>
-
- Mar 12, 2019
-
-
ReinUsesLisp authored
-
Lioncash authored
Now that we pass in a reference to the system instance, we can utilize it to eliminate the global accessors in Process-related code.
-
ReinUsesLisp authored
-
- Mar 11, 2019
-
-
Lioncash authored
The previous code had some minor issues with it, really not a big deal, but amending it is basically 'free', so I figured, "why not?". With the standard container maps, when: map[key] = thing; is done, this can cause potentially undesirable behavior in certain scenarios. In particular, if there's no value associated with the key, then the map constructs a default initialized instance of the value type. In this case, since it's a std::shared_ptr (as a type alias) that is the value type, this will construct a std::shared_pointer, and then assign over it (with objects that are quite large, or actively heap allocate this can be extremely undesirable). We also make the function take the region by value, as we can avoid a copy (and by extension with std::shared_ptr, a copy causes an atomic reference count increment), in certain scenarios when ownership isn't a concern (i.e. when ReserveGlobalRegion is called with an rvalue reference, then no copy at all occurs). So, it's more-or-less a "free" gain without many downsides.
-
Lioncash authored
Two of the functions here are overridden functions, so we can append these specifiers to make it explicit.
-
Lioncash authored
With this, all kernel objects finally have all of their data members behind an interface, making it nicer to reason about interactions with other code (as external code no longer has the freedom to totally alter internals and potentially messing up invariants).
-
ReinUsesLisp authored
-
- Mar 10, 2019
-
-
Lioncash authored
Previously this was required, as BitField wasn't trivially copyable. BitField has since been made trivially copyable, so now this isn't required anymore.
-
Lioncash authored
Gets rid of another holdover from Citra, and describes the OS on the Switch instead.
-
Lioncash authored
Now that the final stray ErrorDescription member was relocated, we can finally remove it and its relevant constructor in the ResultCode union.
-
Lioncash authored
Relocates the error code to where it's most related, similar to how all the other error codes are. Previously we were including a non-generic error in the main result code header.
-
Lioncash authored
These can just be passed regularly, now that we use fmt instead of our old logging system. While we're at it, make the parameters to MakeFunctionString std::string_views.
-
- Mar 09, 2019
-
-
Lioncash authored
This behavior also needs to be visible for MinGW builds as well.
-
Hexagon12 authored
-
Hexagon12 authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
- Mar 08, 2019
-
-
ReinUsesLisp authored
Instead of holding a reference that will get invalidated by dma_pushbuffer.pop(), hold it as a copy. This doesn't have any performance cost since CommandListHeader is 8 bytes long.
-
Lioncash authored
There's no real need to use a shared lifetime here, since we don't actually expose them to anything else. This is also kind of an unnecessary use of the heap given the objects themselves are so small; small enough, in fact that changing over to optionals actually reduces the overall size of the HLERequestContext struct (818 bytes to 808 bytes).
-
Lioncash authored
Now that we have the address arbiter extracted to its own class, we can fix an innaccuracy with the kernel. Said inaccuracy being that there isn't only one address arbiter. Each process instance contains its own AddressArbiter instance in the actual kernel. This fixes that and gets rid of another long-standing issue that could arise when attempting to create more than one process.
-
Lioncash authored
Similar to how WaitForAddress was isolated to its own function, we can also move the necessary conditional checking into the address arbiter class itself, allowing us to hide the implementation details of it from public use.
-
Lioncash authored
Rather than let the service call itself work out which function is the proper one to call, we can make that a behavior of the arbiter itself, so we don't need to directly expose those implementation details.
-
- Mar 07, 2019
-
-
Lioncash authored
This makes the class much more flexible and doesn't make performing copies with classes that contain a bitfield member a pain. Given BitField instances are only intended to be used within unions, the fact the full storage value would be copied isn't a big concern (only sizeof(union_type) would be copied anyways). While we're at it, provide defaulted move constructors for consistency.
-
Lioncash authored
This function didn't have a definition, so we can remove it to prevent accidentally attempting to use it.
-
Lioncash authored
Moves the data members to satisfy the order they're declared as in the constructor initializer list. Silences a -Wreorder warning.
-
Lioncash authored
Because of the recent separation of GPU functionality into sync/async variants, we need to mark the destructor virtual to provide proper destruction behavior, given we use the base class within the System class. Prior to this, it was undefined behavior whether or not the destructor in the derived classes would ever execute.
-
Lioncash authored
Moves the non-multistream specific state to its own class. This will be necessary to support the multistream variants of opus decoding.
-
Lioncash authored
This indicates the entropy coder's final range.
-
Lioncash authored
This will be utilized by more than just that class in the future. This also renames it from OpusHeader to OpusPacketHeader to be more specific about what kind of header it is.
-
Lioncash authored
Makes it impossible to violate the ODR, as well as providing a place for future changes.
-
Lioncash authored
service/audio/audout_u: Only actually stop the audio stream in StopAudioOut if the stream is playing The service itself only does further actions if the stream is playing. If the stream is already stopped, then it just exits successfully.
-