Update app

This commit is contained in:
brunodev85 committed 2024-04-04 17:14:24 -03:00
1 parent 3af161cdef
commit 8feeff4299
43 files changed
+248 -42

No files matched your search

+4 -2
View File
@@ -8,8 +8,8 @@ android {
applicationId 'com.winlator'
minSdkVersion 26
targetSdkVersion 28
versionCode 12
versionName "6.0"
versionCode 13
versionName "6.1"
}
buildTypes {
@@ -27,6 +27,8 @@ android {
checkReleaseBuilds false
}
ndkVersion '22.1.7171670'
externalNativeBuild {
cmake {
version '3.22.1'
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ffbd6b8bb2d8df316038c1ffbe6a882b620ac5a87c078e3272d8299d79de1b64
size 167540620
oid sha256:68491a479524185489abae06045bf9f9d0018b57ec7bd7d26faeb58edcd2f1b5
size 167532776
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.22.1)
Project(Winlator)
set(CMAKE_C_FLAGS "-O2 -Wno-unused-function -Wimplicit-function-declaration")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Wno-unused-function -Wimplicit-function-declaration")
add_subdirectory(proot)
add_subdirectory(virglrenderer)
+1 -1
View File
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.22.1)
project(PRoot)
set(CMAKE_C_FLAGS "-O2 -Wno-unused-function -Wimplicit-function-declaration")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Wno-unused-function -Wimplicit-function-declaration")
add_library(talloc STATIC
talloc/talloc.c)
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.22.1)
project(VirGLRenderer)
set(CMAKE_C_FLAGS "-O2 -Wno-unused-function -Wimplicit-function-declaration")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Wno-unused-function -Wimplicit-function-declaration")
include_directories(src
src/gallium/include
@@ -4,7 +4,6 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
@@ -32,6 +31,7 @@ import com.winlator.container.Container;
import com.winlator.container.ContainerManager;
import com.winlator.contentdialog.AddEnvVarDialog;
import com.winlator.contentdialog.DXVKConfigDialog;
import com.winlator.contentdialog.TurnipConfigDialog;
import com.winlator.core.AppUtils;
import com.winlator.core.Callback;
import com.winlator.core.EnvVars;
@@ -135,8 +135,11 @@ public class ContainerDetailFragment extends Fragment {
final View vDXWrapperConfig = view.findViewById(R.id.BTDXWrapperConfig);
vDXWrapperConfig.setTag(editContainer ? container.getDXWrapperConfig() : "");
final View vGraphicsDriverConfig = view.findViewById(R.id.BTGraphicsDriverConfig);
vGraphicsDriverConfig.setTag(editContainer ? container.getGraphicsDriverConfig() : "");
setupDXWrapperSpinner(sDXWrapper, vDXWrapperConfig);
loadGraphicsDriverSpinner(sGraphicsDriver, sDXWrapper,
loadGraphicsDriverSpinner(sGraphicsDriver, sDXWrapper, vGraphicsDriverConfig,
editContainer ? container.getGraphicsDriver() : Container.DEFAULT_GRAPHICS_DRIVER, editContainer ? container.getDXWrapper() : Container.DEFAULT_DXWRAPPER);
view.findViewById(R.id.BTHelpDXWrapper).setOnClickListener((v) -> AppUtils.showHelpBox(context, v, R.string.dxwrapper_help_content));
@@ -175,6 +178,7 @@ public class ContainerDetailFragment extends Fragment {
String graphicsDriver = StringUtils.parseIdentifier(sGraphicsDriver.getSelectedItem());
String dxwrapper = StringUtils.parseIdentifier(sDXWrapper.getSelectedItem());
String dxwrapperConfig = vDXWrapperConfig.getTag().toString();
String graphicsDriverConfig = vGraphicsDriverConfig.getTag().toString();
String audioDriver = StringUtils.parseIdentifier(sAudioDriver.getSelectedItem());
String wincomponents = getWinComponents(view);
String drives = getDrives(view);
@@ -193,6 +197,7 @@ public class ContainerDetailFragment extends Fragment {
container.setGraphicsDriver(graphicsDriver);
container.setDXWrapper(dxwrapper);
container.setDXWrapperConfig(dxwrapperConfig);
container.setGraphicsDriverConfig(graphicsDriverConfig);
container.setAudioDriver(audioDriver);
container.setWinComponents(wincomponents);
container.setDrives(drives);
@@ -214,6 +219,7 @@ public class ContainerDetailFragment extends Fragment {
data.put("graphicsDriver", graphicsDriver);
data.put("dxwrapper", dxwrapper);
data.put("dxwrapperConfig", dxwrapperConfig);
data.put("graphicsDriverConfig", graphicsDriverConfig);
data.put("audioDriver", audioDriver);
data.put("wincomponents", wincomponents);
data.put("drives", drives);
@@ -442,7 +448,7 @@ public class ContainerDetailFragment extends Fragment {
}
}
public static void loadGraphicsDriverSpinner(final Spinner sGraphicsDriver, final Spinner sDXWrapper, String selectedGraphicsDriver, String selectedDXWrapper) {
public static void loadGraphicsDriverSpinner(final Spinner sGraphicsDriver, final Spinner sDXWrapper, final View vGraphicsDriverConfig, String selectedGraphicsDriver, String selectedDXWrapper) {
final Context context = sGraphicsDriver.getContext();
final String[] dxwrapperEntries = context.getResources().getStringArray(R.array.dxwrapper_entries);
@@ -459,6 +465,12 @@ public class ContainerDetailFragment extends Fragment {
sGraphicsDriver.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String graphicsDriver = StringUtils.parseIdentifier(sGraphicsDriver.getSelectedItem());
if (graphicsDriver.equals("turnip")) {
vGraphicsDriverConfig.setOnClickListener((v) -> (new TurnipConfigDialog(vGraphicsDriverConfig)).show());
vGraphicsDriverConfig.setVisibility(View.VISIBLE);
}
else vGraphicsDriverConfig.setVisibility(View.GONE);
update.run();
}
@@ -467,11 +479,10 @@ public class ContainerDetailFragment extends Fragment {
});
AppUtils.setSpinnerSelectionFromIdentifier(sGraphicsDriver, selectedGraphicsDriver);
update.run();
}
public static void setupDXWrapperSpinner(Spinner sDXWrapper, View vDXWrapperConfig) {
public static void setupDXWrapperSpinner(final Spinner sDXWrapper, final View vDXWrapperConfig) {
sDXWrapper.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
@@ -185,9 +185,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
try {
final PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
TextView tvDeveloper = dialog.findViewById(R.id.TVDeveloper);
tvDeveloper.setText(Html.fromHtml("by BrunoSX (<a href=\"https://www.winlator.org\">winlator.org</a>)", Html.FROM_HTML_MODE_LEGACY));
tvDeveloper.setMovementMethod(LinkMovementMethod.getInstance());
TextView tvWebpage = dialog.findViewById(R.id.TVWebpage);
tvWebpage.setText(Html.fromHtml("<a href=\"https://www.winlator.org\">winlator.org</a>", Html.FROM_HTML_MODE_LEGACY));
tvWebpage.setMovementMethod(LinkMovementMethod.getInstance());
((TextView)dialog.findViewById(R.id.TVAppVersion)).setText(getString(R.string.version)+" "+pInfo.versionName);
@@ -26,6 +26,7 @@ import com.winlator.container.ContainerManager;
import com.winlator.container.Shortcut;
import com.winlator.contentdialog.ContentDialog;
import com.winlator.contentdialog.DXVKConfigDialog;
import com.winlator.contentdialog.TurnipConfigDialog;
import com.winlator.core.AppUtils;
import com.winlator.core.CursorLocker;
import com.winlator.core.EnvVars;
@@ -96,6 +97,7 @@ public class XServerDisplayActivity extends AppCompatActivity implements Navigat
private String audioDriver = Container.DEFAULT_AUDIO_DRIVER;
private String dxwrapper = Container.DEFAULT_DXWRAPPER;
private KeyValueSet dxwrapperConfig;
private KeyValueSet graphicsDriverConfig;
private WineInfo wineInfo;
private final EnvVars envVars = new EnvVars();
private boolean firstTimeBoot = false;
@@ -145,6 +147,7 @@ public class XServerDisplayActivity extends AppCompatActivity implements Navigat
audioDriver = container.getAudioDriver();
dxwrapper = container.getDXWrapper();
String dxwrapperConfig = container.getDXWrapperConfig();
String graphicsDriverConfig = container.getGraphicsDriverConfig();
screenSize = container.getScreenSize();
if (shortcut != null) {
@@ -152,6 +155,7 @@ public class XServerDisplayActivity extends AppCompatActivity implements Navigat
audioDriver = shortcut.getExtra("audioDriver", container.getAudioDriver());
dxwrapper = shortcut.getExtra("dxwrapper", container.getDXWrapper());
dxwrapperConfig = shortcut.getExtra("dxwrapperConfig", container.getDXWrapperConfig());
graphicsDriverConfig = shortcut.getExtra("graphicsDriverConfig", container.getGraphicsDriverConfig());
screenSize = shortcut.getExtra("screenSize", container.getScreenSize());
String dinputMapperType = shortcut.getExtra("dinputMapperType");
@@ -159,6 +163,7 @@ public class XServerDisplayActivity extends AppCompatActivity implements Navigat
}
if (dxwrapper.equals("dxvk")) this.dxwrapperConfig = DXVKConfigDialog.parseConfig(dxwrapperConfig);
if (graphicsDriver.equals("turnip")) this.graphicsDriverConfig = TurnipConfigDialog.parseConfig(this, graphicsDriverConfig);
if (!wineInfo.isWin64()) {
onExtractFileListener = (file, size) -> {
@@ -407,6 +412,7 @@ public class XServerDisplayActivity extends AppCompatActivity implements Navigat
winHandler.start();
envVars.clear();
dxwrapperConfig = null;
graphicsDriverConfig = null;
}
private void setupUI() {
@@ -529,7 +535,7 @@ public class XServerDisplayActivity extends AppCompatActivity implements Navigat
private void extractGraphicsDriverFiles() {
String cacheId = graphicsDriver;
if (graphicsDriver.equals("turnip")) {
cacheId += "-"+DefaultVersion.TURNIP+"-"+DefaultVersion.ZINK;
cacheId += "-"+graphicsDriverConfig.get("version")+"-"+DefaultVersion.ZINK;
}
else if (graphicsDriver.equals("virgl")) {
cacheId += "-"+DefaultVersion.VIRGL;
@@ -549,8 +555,8 @@ public class XServerDisplayActivity extends AppCompatActivity implements Navigat
if (graphicsDriver.equals("turnip")) {
if (dxwrapper.equals("dxvk")) DXVKConfigDialog.setEnvVars(this, dxwrapperConfig, envVars);
TurnipConfigDialog.setEnvVars(graphicsDriverConfig, envVars);
envVars.put("GALLIUM_DRIVER", "zink");
envVars.put("TU_DEBUG", "noconform");
envVars.put("MESA_VK_WSI_PRESENT_MODE", "mailbox");
envVars.put("vblank_mode", "0");
@@ -561,7 +567,7 @@ public class XServerDisplayActivity extends AppCompatActivity implements Navigat
}
if (changed) {
TarCompressorUtils.extract(TarCompressorUtils.Type.ZSTD, this, "graphics_driver/turnip-"+DefaultVersion.TURNIP+".tzst", rootDir);
TarCompressorUtils.extract(TarCompressorUtils.Type.ZSTD, this, "graphics_driver/turnip-"+graphicsDriverConfig.get("version")+".tzst", rootDir);
TarCompressorUtils.extract(TarCompressorUtils.Type.ZSTD, this, "graphics_driver/zink-"+DefaultVersion.ZINK+".tzst", rootDir);
}
}
@@ -25,7 +25,7 @@ public class Container {
public static final String DEFAULT_DXWRAPPER = "wined3d";
public static final String DEFAULT_WINCOMPONENTS = "direct3d=1,directsound=1,directmusic=0,directshow=0,directplay=0,vcrun2010=1";
public static final String FALLBACK_WINCOMPONENTS = "direct3d=0,directsound=0,directmusic=0,directshow=0,directplay=0,vcrun2010=0";
public static final String DEFAULT_DRIVES = "D:"+Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
public static final String DEFAULT_DRIVES = "D:"+Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"E:/data/data/com.winlator/storage";
public static final byte MAX_DRIVE_LETTERS = 8;
public final int id;
private String name;
@@ -34,6 +34,7 @@ public class Container {
private String graphicsDriver = DEFAULT_GRAPHICS_DRIVER;
private String dxwrapper = DEFAULT_DXWRAPPER;
private String dxwrapperConfig = "";
private String graphicsDriverConfig = "";
private String wincomponents = DEFAULT_WINCOMPONENTS;
private String audioDriver = DEFAULT_AUDIO_DRIVER;
private String drives = DEFAULT_DRIVES;
@@ -100,6 +101,14 @@ public class Container {
this.dxwrapperConfig = dxwrapperConfig != null ? dxwrapperConfig : "";
}
public String getGraphicsDriverConfig() {
return graphicsDriverConfig;
}
public void setGraphicsDriverConfig(String graphicsDriverConfig) {
this.graphicsDriverConfig = graphicsDriverConfig != null ? graphicsDriverConfig : "";
}
public String getAudioDriver() {
return audioDriver;
}
@@ -267,6 +276,7 @@ public class Container {
data.put("graphicsDriver", graphicsDriver);
data.put("dxwrapper", dxwrapper);
if (!dxwrapperConfig.isEmpty()) data.put("dxwrapperConfig", dxwrapperConfig);
if (!graphicsDriverConfig.isEmpty()) data.put("graphicsDriverConfig", graphicsDriverConfig);
data.put("audioDriver", audioDriver);
data.put("wincomponents", wincomponents);
data.put("drives", drives);
@@ -289,6 +299,7 @@ public class Container {
public void loadData(JSONObject data) throws JSONException {
wineVersion = WineInfo.MAIN_WINE_VERSION.identifier();
dxwrapperConfig = "";
graphicsDriverConfig = "";
checkObsoleteOrMissingProperties(data);
for (Iterator<String> it = data.keys(); it.hasNext(); ) {
@@ -318,6 +329,9 @@ public class Container {
case "dxwrapperConfig" :
setDXWrapperConfig(data.getString(key));
break;
case "graphicsDriverConfig" :
setGraphicsDriverConfig(data.getString(key));
break;
case "drives" :
setDrives(data.getString(key));
break;
@@ -141,6 +141,7 @@ public class ContainerManager {
dstContainer.setGraphicsDriver(srcContainer.getGraphicsDriver());
dstContainer.setDXWrapper(srcContainer.getDXWrapper());
dstContainer.setDXWrapperConfig(srcContainer.getDXWrapperConfig());
dstContainer.setGraphicsDriverConfig(srcContainer.getGraphicsDriverConfig());
dstContainer.setAudioDriver(srcContainer.getAudioDriver());
dstContainer.setWinComponents(srcContainer.getWinComponents());
dstContainer.setDrives(srcContainer.getDrives());
@@ -66,14 +66,17 @@ public class ShortcutSettingsDialog extends ContentDialog {
final View vDXWrapperConfig = findViewById(R.id.BTDXWrapperConfig);
vDXWrapperConfig.setTag(shortcut.getExtra("dxwrapperConfig", shortcut.container.getDXWrapperConfig()));
final View vGraphicsDriverConfig = findViewById(R.id.BTGraphicsDriverConfig);
vGraphicsDriverConfig.setTag(shortcut.getExtra("graphicsDriverConfig", shortcut.container.getGraphicsDriverConfig()));
ContainerDetailFragment.setupDXWrapperSpinner(sDXWrapper, vDXWrapperConfig);
ContainerDetailFragment.loadGraphicsDriverSpinner(sGraphicsDriver, sDXWrapper,
ContainerDetailFragment.loadGraphicsDriverSpinner(sGraphicsDriver, sDXWrapper, vGraphicsDriverConfig,
shortcut.getExtra("graphicsDriver", shortcut.container.getGraphicsDriver()), shortcut.getExtra("dxwrapper", shortcut.container.getDXWrapper()));
findViewById(R.id.BTHelpDXWrapper).setOnClickListener((v) -> AppUtils.showHelpBox(context, v, R.string.dxwrapper_help_content));
final Spinner sAudioDriver = findViewById(R.id.SAudioDriver);
AppUtils.setSpinnerSelectionFromIdentifier(sAudioDriver, shortcut.getExtra("audioDriver"));
AppUtils.setSpinnerSelectionFromIdentifier(sAudioDriver, shortcut.getExtra("audioDriver", shortcut.container.getAudioDriver()));
final CheckBox cbForceFullscreen = findViewById(R.id.CBForceFullscreen);
cbForceFullscreen.setChecked(shortcut.getExtra("forceFullscreen", "0").equals("1"));
@@ -117,6 +120,7 @@ public class ShortcutSettingsDialog extends ContentDialog {
String graphicsDriver = StringUtils.parseIdentifier(sGraphicsDriver.getSelectedItem());
String dxwrapper = StringUtils.parseIdentifier(sDXWrapper.getSelectedItem());
String dxwrapperConfig = vDXWrapperConfig.getTag().toString();
String graphicsDriverConfig = vGraphicsDriverConfig.getTag().toString();
String audioDriver = StringUtils.parseIdentifier(sAudioDriver.getSelectedItem());
String execArgs = etExecArgs.getText().toString();
@@ -125,6 +129,7 @@ public class ShortcutSettingsDialog extends ContentDialog {
shortcut.putExtra("graphicsDriver", !graphicsDriver.equals(shortcut.container.getGraphicsDriver()) ? graphicsDriver : null);
shortcut.putExtra("dxwrapper", !dxwrapper.equals(shortcut.container.getDXWrapper()) ? dxwrapper : null);
shortcut.putExtra("dxwrapperConfig", !dxwrapperConfig.equals(shortcut.container.getDXWrapperConfig()) ? dxwrapperConfig : null);
shortcut.putExtra("graphicsDriverConfig", !graphicsDriverConfig.equals(shortcut.container.getGraphicsDriverConfig()) ? graphicsDriverConfig : null);
shortcut.putExtra("audioDriver", !audioDriver.equals(shortcut.container.getAudioDriver())? audioDriver : null);
shortcut.putExtra("forceFullscreen", cbForceFullscreen.isChecked() ? "1" : null);
shortcut.putExtra("wincomponents", getWinComponents());
@@ -0,0 +1,81 @@
package com.winlator.contentdialog;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.Spinner;
import com.winlator.R;
import com.winlator.core.AppUtils;
import com.winlator.core.DefaultVersion;
import com.winlator.core.EnvVars;
import com.winlator.core.KeyValueSet;
import com.winlator.core.StringUtils;
import com.winlator.core.UnitUtils;
public class TurnipConfigDialog extends ContentDialog {
private static final String[] DEBUG_OPTIONS = {"noconform", "syncdraw", "flushall"};
public TurnipConfigDialog(View anchor) {
super(anchor.getContext(), R.layout.turnip_config_dialog);
Context context = anchor.getContext();
setIcon(R.drawable.icon_settings);
setTitle("Turnip "+context.getString(R.string.configuration));
final Spinner sVersion = findViewById(R.id.SVersion);
KeyValueSet config = parseConfig(context, anchor.getTag());
AppUtils.setSpinnerSelectionFromIdentifier(sVersion, config.get("version"));
loadDebugOptions(config.get("options"));
setOnConfirmCallback(() -> {
config.put("version", StringUtils.parseNumber(sVersion.getSelectedItem()));
config.put("options", getDebugOptions());
anchor.setTag(config.toString());
});
}
private static String getDefaultConfig(Context context) {
return "version="+DefaultVersion.TURNIP(context)+",options=noconform";
}
private String getDebugOptions() {
String options = "";
LinearLayout container = findViewById(R.id.LLOptions);
for (int i = 0; i < container.getChildCount(); i++) {
CheckBox checkBox = (CheckBox)container.getChildAt(i);
if (checkBox.isChecked()) options += (!options.isEmpty() ? "|" : "")+checkBox.getText();
}
return options;
}
private void loadDebugOptions(String options) {
LinearLayout container = findViewById(R.id.LLOptions);
container.removeAllViews();
Context context = container.getContext();
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 0, (int)UnitUtils.dpToPx(4), 0);
for (String opt : DEBUG_OPTIONS) {
CheckBox checkBox = new CheckBox(context);
checkBox.setText(opt);
checkBox.setLayoutParams(params);
checkBox.setChecked(options.contains(opt));
container.addView(checkBox);
}
}
public static KeyValueSet parseConfig(Context context, Object config) {
String data = config != null && !config.toString().isEmpty() ? config.toString() : getDefaultConfig(context);
return new KeyValueSet(data);
}
public static void setEnvVars(KeyValueSet config, EnvVars envVars) {
String options = config.get("options");
if (!options.isEmpty()) envVars.put("TU_DEBUG", options.replace("|", ","));
}
}
@@ -1,10 +1,15 @@
package com.winlator.core;
import android.content.Context;
public abstract class DefaultVersion {
public static final String BOX86 = "0.3.0";
public static final String BOX64 = "0.2.6";
public static final String TURNIP = "24.0.2";
public static final String ZINK = "22.2.2";
public static final String VIRGL = "22.1.7";
public static final String DXVK = "1.10.3";
public static String TURNIP(Context context) {
return GPUInformation.isAdreno6xx(context) ? "23.0.0" : "24.1.0";
}
}
@@ -31,7 +31,13 @@ public abstract class WineUtils {
FileUtils.symlink("/", dosdevicesPath+"/z:");
for (String[] drive : container.drivesIterator()) {
FileUtils.symlink((new File(drive[1])).getAbsolutePath(), dosdevicesPath+"/"+drive[0].toLowerCase(Locale.ENGLISH)+":");
File linkTarget = new File(drive[1]);
String path = linkTarget.getAbsolutePath();
if (!linkTarget.isDirectory() && path.endsWith("/com.winlator/storage")) {
linkTarget.mkdirs();
FileUtils.chmod(linkTarget, 0771);
}
FileUtils.symlink(path, dosdevicesPath+"/"+drive[0].toLowerCase(Locale.ENGLISH)+":");
}
}
@@ -85,12 +85,12 @@ public class TouchpadView extends View {
this.y = transformedPoint[1];
}
private int deltaX() {
private int deltaX(float sensitivity) {
float dx = (x - lastX) * sensitivity;
return (int)(x <= lastX ? Math.floor(dx) : Math.ceil(dx));
}
private int deltaY() {
private int deltaY(float sensitivity) {
float dy = (y - lastY) * sensitivity;
return (int)(y <= lastY ? Math.floor(dy) : Math.ceil(dy));
}
@@ -214,8 +214,10 @@ public class TouchpadView extends View {
}
if (!scrolling && numFingers <= 2 && !skipPointerMove) {
int dx = finger1.deltaX();
int dy = finger1.deltaY();
float distance = (float)Math.hypot(finger1.x - finger1.lastX, finger1.y - finger1.lastY);
float sensitivity = this.sensitivity * Math.min(distance, 1.0f);
int dx = finger1.deltaX(sensitivity);
int dy = finger1.deltaY(sensitivity);
if (xServer.cursorLocker.getState() == CursorLocker.State.LOCKED) {
WinHandler winHandler = xServer.getWinHandler();
@@ -26,7 +26,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicLong;
public abstract class ImageFsInstaller {
public static final byte LATEST_VERSION = 4;
public static final byte LATEST_VERSION = 5;
private static void resetContainerImgVersions(Context context) {
ContainerManager manager = new ContainerManager(context);
@@ -177,7 +177,7 @@ public class GuestProgramLauncherComponent extends EnvironmentComponent {
}
private void addBox86EnvVars(EnvVars envVars) {
envVars.put("BOX86_NOBANNER", "1");
envVars.put("BOX86_NOBANNER", MainActivity.DEBUG_LEVEL == 1 ? "0" : "1");
envVars.put("BOX86_DYNAREC", "1");
if (MainActivity.DEBUG_LEVEL >= 3) envVars.put("BOX86_LOG", MainActivity.DEBUG_LEVEL == 3 ? "1" : "2");
@@ -188,7 +188,7 @@ public class GuestProgramLauncherComponent extends EnvironmentComponent {
}
private void addBox64EnvVars(EnvVars envVars) {
envVars.put("BOX64_NOBANNER", "1");
envVars.put("BOX64_NOBANNER", MainActivity.DEBUG_LEVEL == 1 ? "0" : "1");
envVars.put("BOX64_DYNAREC", "1");
if (MainActivity.DEBUG_LEVEL >= 3) envVars.put("BOX64_LOG", MainActivity.DEBUG_LEVEL == 3 ? "1" : "2");
@@ -55,10 +55,12 @@ public class PulseAudioComponent extends EnvironmentComponent {
"set-default-sink AAudioSink"
));
File modulesDir = new File(workingDir, "modules/"+ AppUtils.getArchName());
String archName = AppUtils.getArchName();
File modulesDir = new File(workingDir, "modules/"+archName);
String systemLibPath = archName.equals("arm64") ? "/system/lib64" : "system/lib";
ArrayList<String> envVars = new ArrayList<>();
envVars.add("LD_LIBRARY_PATH="+nativeLibraryDir+":"+modulesDir);
envVars.add("LD_LIBRARY_PATH="+systemLibPath+":"+nativeLibraryDir+":"+modulesDir);
envVars.add("HOME="+workingDir);
envVars.add("TMPDIR="+environment.getTmpDir());
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -30,11 +30,11 @@
android:text="@string/app_name" />
<TextView
android:id="@+id/TVDeveloper"
android:id="@+id/TVWebpage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="#9e9e9e" />
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/TVAppVersion"
@@ -124,11 +124,25 @@
android:layout_height="wrap_content"
android:text="@string/graphics_driver" />
<Spinner
style="@style/ComboBox"
<LinearLayout
android:layout_width="match_parent"
android:id="@+id/SGraphicsDriver"
android:entries="@array/graphics_driver_entries" />
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<Spinner
style="@style/ComboBox"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/SGraphicsDriver"
android:entries="@array/graphics_driver_entries" />
<ImageButton
style="@style/ListMenuButton"
android:id="@+id/BTGraphicsDriverConfig"
android:src="@drawable/icon_settings"
android:visibility="gone" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@@ -103,11 +103,25 @@
android:layout_height="wrap_content"
android:text="@string/graphics_driver" />
<Spinner
style="@style/ComboBox"
<LinearLayout
android:layout_width="match_parent"
android:id="@+id/SGraphicsDriver"
android:entries="@array/graphics_driver_entries" />
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<Spinner
style="@style/ComboBox"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/SGraphicsDriver"
android:entries="@array/graphics_driver_entries" />
<ImageButton
style="@style/ListMenuButton"
android:id="@+id/BTGraphicsDriverConfig"
android:src="@drawable/icon_settings"
android:visibility="gone" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="120dp">
<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/version" />
<Spinner
style="@style/ComboBox"
android:layout_width="match_parent"
android:id="@+id/SVersion"
android:entries="@array/turnip_version_entries" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/options" />
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/LLOptions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" />
</HorizontalScrollView>
</LinearLayout>
</ScrollView>
+4
View File
@@ -40,6 +40,10 @@
<item>1.10.3 (Default)</item>
<item>2.3.1</item>
</string-array>
<string-array name="turnip_version_entries">
<item>23.0.0</item>
<item>24.1.0</item>
</string-array>
<string-array name="dxvk_max_device_memory_entries">
<item>0 (Default)</item>
<item>512 MB</item>
+1
View File
@@ -211,4 +211,5 @@
<string name="browse">Browse</string>
<string name="magnifier">Magnifier</string>
<string name="bring_to_front">Bring to Front</string>
<string name="options">Options</string>
</resources>