diff --git a/CMakeLists.txt b/CMakeLists.txt index 163ea2c943..04bcdde4c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -980,6 +980,10 @@ else() set(DOLPHIN_WC_IS_STABLE "0") endif() +# Remove in-tree revision information generated by Visual Studio +# This is because the compiler will check in-tree first and use this, even if it is outdated +file(REMOVE "${PROJECT_SOURCE_DIR}/Source/Core/Common/scmrev.h") + configure_file( "${PROJECT_SOURCE_DIR}/Source/Core/Common/scmrev.h.in" "${PROJECT_BINARY_DIR}/Source/Core/Common/scmrev.h" diff --git a/Externals/hidapi/CMakeLists.txt b/Externals/hidapi/CMakeLists.txt index 1cf77404f0..a5d88df5fe 100644 --- a/Externals/hidapi/CMakeLists.txt +++ b/Externals/hidapi/CMakeLists.txt @@ -9,7 +9,7 @@ if(APPLE) elseif(MSVC) target_sources(hidapi PRIVATE windows/hid.c) else() - find_package(Libudev) + find_package(LIBUDEV) if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND LIBUDEV_FOUND) target_sources(hidapi PRIVATE linux/hid.c) target_link_libraries(hidapi PRIVATE udev) diff --git a/Installer/Installer.nsi b/Installer/Installer.nsi index c08ada69c9..1ad09ddce8 100644 --- a/Installer/Installer.nsi +++ b/Installer/Installer.nsi @@ -154,20 +154,6 @@ Section "Base" SEC01 SetOutPath "$TEMP" SetOverwrite on - File /r "dxredist" - File /r "vcredist" -SectionEnd - -Section "DirectX Runtime" SEC02 - DetailPrint "Running DirectX runtime setup..." - ExecWait '"$TEMP\dxredist\DXSETUP.exe" /silent' - DetailPrint "Finished DirectX runtime setup" -SectionEnd - -Section "Visual C++ 2015 Redistributable" SEC03 - DetailPrint "Running Visual C++ 2015 Redistributable setup..." - ExecWait '"$TEMP\vcredist\vc_redist.x64.exe" /install /quiet /norestart' - DetailPrint "Finished Visual C++ 2015 Redistributable setup" SectionEnd Section -AdditionalIcons @@ -193,8 +179,6 @@ SectionEnd ; Section descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Installs all files required to run the Dolphin Emulator." - !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Installs the recommended DirectX runtime libraries that are needed by Dolphin." - !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Installs the required Visual C++ 2015 Redistributable that is needed by Dolphin." !insertmacro MUI_FUNCTION_DESCRIPTION_END Section Uninstall diff --git a/Installer/dxredist/APR2007_xinput_x64.cab b/Installer/dxredist/APR2007_xinput_x64.cab deleted file mode 100644 index 732f8a8f36..0000000000 Binary files a/Installer/dxredist/APR2007_xinput_x64.cab and /dev/null differ diff --git a/Installer/dxredist/APR2007_xinput_x86.cab b/Installer/dxredist/APR2007_xinput_x86.cab deleted file mode 100644 index f414d55571..0000000000 Binary files a/Installer/dxredist/APR2007_xinput_x86.cab and /dev/null differ diff --git a/Installer/dxredist/DSETUP.dll b/Installer/dxredist/DSETUP.dll deleted file mode 100644 index 691025af7e..0000000000 Binary files a/Installer/dxredist/DSETUP.dll and /dev/null differ diff --git a/Installer/dxredist/DXSETUP.exe b/Installer/dxredist/DXSETUP.exe deleted file mode 100644 index 5d062aa978..0000000000 Binary files a/Installer/dxredist/DXSETUP.exe and /dev/null differ diff --git a/Installer/dxredist/dsetup32.dll b/Installer/dxredist/dsetup32.dll deleted file mode 100644 index 1781afa4b0..0000000000 Binary files a/Installer/dxredist/dsetup32.dll and /dev/null differ diff --git a/Installer/dxredist/dxupdate.cab b/Installer/dxredist/dxupdate.cab deleted file mode 100644 index ed3b5b89f5..0000000000 Binary files a/Installer/dxredist/dxupdate.cab and /dev/null differ diff --git a/Installer/vcredist/vc_redist.x64.exe b/Installer/vcredist/vc_redist.x64.exe deleted file mode 100644 index f986317bff..0000000000 Binary files a/Installer/vcredist/vc_redist.x64.exe and /dev/null differ diff --git a/Readme.md b/Readme.md index 699e943c44..a6747c9cba 100644 --- a/Readme.md +++ b/Readme.md @@ -16,7 +16,7 @@ Primehack is now supported on MacOS thanks to the efforts of [Brandon Sorensen]( # Original Dolphin Readme file contents: -[Homepage](https://dolphin-emu.org/) | [Project Site](https://github.com/dolphin-emu/dolphin) | [Buildbot](https://dolphin.ci) | [Forums](https://forums.dolphin-emu.org) | [Wiki](https://wiki.dolphin-emu.org) | [Github Wiki](https://github.com/dolphin-emu/dolphin/wiki) | [Issue Tracker](https://bugs.dolphin-emu.org/projects/emulator/issues) | [Coding Style](https://github.com/dolphin-emu/dolphin/blob/master/Contributing.md) | [Transifex Page](https://www.transifex.com/projects/p/dolphin-emu) +[Homepage](https://dolphin-emu.org/) | [Project Site](https://github.com/dolphin-emu/dolphin) | [Buildbot](https://dolphin.ci/) | [Forums](https://forums.dolphin-emu.org/) | [Wiki](https://wiki.dolphin-emu.org/) | [GitHub Wiki](https://github.com/dolphin-emu/dolphin/wiki) | [Issue Tracker](https://bugs.dolphin-emu.org/projects/emulator/issues) | [Coding Style](https://github.com/dolphin-emu/dolphin/blob/master/Contributing.md) | [Transifex Page](https://explore.transifex.com/delroth/dolphin-emu/) Dolphin is an emulator for running GameCube and Wii games on Windows, Linux, macOS, and recent Android devices. It's licensed under the terms diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatListFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatListFragment.java index efc446d50e..a2cf37dba8 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatListFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/cheats/ui/CheatListFragment.java @@ -14,9 +14,10 @@ import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.divider.MaterialDividerItemDecoration; + import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.cheats.model.CheatsViewModel; -import org.dolphinemu.dolphinemu.ui.DividerItemDecoration; public class CheatListFragment extends Fragment { @@ -38,6 +39,10 @@ public class CheatListFragment extends Fragment recyclerView.setAdapter(new CheatsAdapter(activity, viewModel)); recyclerView.setLayoutManager(new LinearLayoutManager(activity)); - recyclerView.addItemDecoration(new DividerItemDecoration(activity, null)); + + MaterialDividerItemDecoration divider = + new MaterialDividerItemDecoration(requireActivity(), LinearLayoutManager.VERTICAL); + divider.setLastItemDecorated(false); + recyclerView.addItemDecoration(divider); } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java index 86a5650de5..89587ea535 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java @@ -14,10 +14,11 @@ import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.divider.MaterialDividerItemDecoration; + import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.model.Settings; import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem; -import org.dolphinemu.dolphinemu.ui.DividerItemDecoration; import java.util.ArrayList; import java.util.HashMap; @@ -136,7 +137,11 @@ public final class SettingsFragment extends Fragment implements SettingsFragment recyclerView.setAdapter(mAdapter); recyclerView.setLayoutManager(manager); - recyclerView.addItemDecoration(new DividerItemDecoration(requireActivity(), null)); + + MaterialDividerItemDecoration divider = + new MaterialDividerItemDecoration(requireActivity(), LinearLayoutManager.VERTICAL); + divider.setLastItemDecorated(false); + recyclerView.addItemDecoration(divider); SettingsActivityView activity = (SettingsActivityView) getActivity(); mPresenter.onViewCreated(menuTag, activity.getSettings()); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/DividerItemDecoration.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/DividerItemDecoration.java deleted file mode 100644 index f7a1689af5..0000000000 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/DividerItemDecoration.java +++ /dev/null @@ -1,162 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later - -package org.dolphinemu.dolphinemu.ui; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Canvas; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -/** - * Implementation from: - * https://gist.github.com/lapastillaroja/858caf1a82791b6c1a36 - */ -public final class DividerItemDecoration extends RecyclerView.ItemDecoration -{ - - private Drawable mDivider; - private boolean mShowFirstDivider = false; - private boolean mShowLastDivider = false; - - public DividerItemDecoration(Context context, AttributeSet attrs) - { - final TypedArray a = context - .obtainStyledAttributes(attrs, new int[]{android.R.attr.listDivider}); - mDivider = a.getDrawable(0); - a.recycle(); - } - - public DividerItemDecoration(Context context, AttributeSet attrs, boolean showFirstDivider, - boolean showLastDivider) - { - this(context, attrs); - mShowFirstDivider = showFirstDivider; - mShowLastDivider = showLastDivider; - } - - public DividerItemDecoration(Drawable divider) - { - mDivider = divider; - } - - public DividerItemDecoration(Drawable divider, boolean showFirstDivider, - boolean showLastDivider) - { - this(divider); - mShowFirstDivider = showFirstDivider; - mShowLastDivider = showLastDivider; - } - - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, - @NonNull RecyclerView parent, - @NonNull RecyclerView.State state) - { - super.getItemOffsets(outRect, view, parent, state); - if (mDivider == null) - { - return; - } - if (parent.getChildAdapterPosition(view) < 1) - { - return; - } - - if (getOrientation(parent) == LinearLayoutManager.VERTICAL) - { - outRect.top = mDivider.getIntrinsicHeight(); - } - else - { - outRect.left = mDivider.getIntrinsicWidth(); - } - } - - @Override - public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, - @NonNull RecyclerView.State state) - { - if (mDivider == null) - { - super.onDrawOver(c, parent, state); - return; - } - - // Initialization needed to avoid compiler warning - int left = 0, right = 0, top = 0, bottom = 0, size; - int orientation = getOrientation(parent); - int childCount = parent.getChildCount(); - - if (orientation == LinearLayoutManager.VERTICAL) - { - size = mDivider.getIntrinsicHeight(); - left = parent.getPaddingLeft(); - right = parent.getWidth() - parent.getPaddingRight(); - } - else - { //horizontal - size = mDivider.getIntrinsicWidth(); - top = parent.getPaddingTop(); - bottom = parent.getHeight() - parent.getPaddingBottom(); - } - - for (int i = mShowFirstDivider ? 0 : 1; i < childCount; i++) - { - View child = parent.getChildAt(i); - RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); - - if (orientation == LinearLayoutManager.VERTICAL) - { - top = child.getTop() - params.topMargin; - bottom = top + size; - } - else - { //horizontal - left = child.getLeft() - params.leftMargin; - right = left + size; - } - mDivider.setBounds(left, top, right, bottom); - mDivider.draw(c); - } - - // show last divider - if (mShowLastDivider && childCount > 0) - { - View child = parent.getChildAt(childCount - 1); - RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); - if (orientation == LinearLayoutManager.VERTICAL) - { - top = child.getBottom() + params.bottomMargin; - bottom = top + size; - } - else - { // horizontal - left = child.getRight() + params.rightMargin; - right = left + size; - } - mDivider.setBounds(left, top, right, bottom); - mDivider.draw(c); - } - } - - private int getOrientation(RecyclerView parent) - { - if (parent.getLayoutManager() instanceof LinearLayoutManager) - { - LinearLayoutManager layoutManager = (LinearLayoutManager) parent.getLayoutManager(); - return layoutManager.getOrientation(); - } - else - { - throw new IllegalStateException( - "DividerItemDecoration can only be used with a LinearLayoutManager."); - } - } -} diff --git a/Source/Android/app/src/main/res/layout-land/activity_user_data.xml b/Source/Android/app/src/main/res/layout-land/activity_user_data.xml index 597e598266..24863dcd5f 100644 --- a/Source/Android/app/src/main/res/layout-land/activity_user_data.xml +++ b/Source/Android/app/src/main/res/layout-land/activity_user_data.xml @@ -50,7 +50,7 @@ app:layout_constraintWidth_max="400dp" app:layout_constraintEnd_toStartOf="@id/divider" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="@id/divider" + app:layout_constraintTop_toTopOf="parent" tools:text="@string/user_data_new_location" /> - diff --git a/Source/Android/app/src/main/res/layout-w680dp-land/activity_convert.xml b/Source/Android/app/src/main/res/layout-w680dp-land/activity_convert.xml index 8091203873..1c00d679a6 100644 --- a/Source/Android/app/src/main/res/layout-w680dp-land/activity_convert.xml +++ b/Source/Android/app/src/main/res/layout-w680dp-land/activity_convert.xml @@ -53,11 +53,10 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/divider" /> - - - - - - + android:layout_marginBottom="16dp" />