Wine kompilieren und Patches

Alles rund um WINE, Cedega & CrossOver Games

Moderator: Moderator

Wine kompilieren und Patches

Beitragvon freaky-m0 » 05.04.2008, 16:25

Alsooo...

mir geht es hier mal speziell darum eine gute Dokumentation zu finden / erstellen über folgendes:

- Wine selbst kompilieren > WIE?
- Wine mit Patches auf bestimmte Spiele oder Allgemein verbessern - WIE?

Wobei es mir umd das Thema Patches ganz speziell geht..
Ich persönlihc weiss nämlihc weder wie bzw. wo man Patches bekommt.. woher man weiss welcher Patch was bewirkt.. welche sinnvoll sind oder wie man diese überhaupt wirklich Anwedet!

Ich mein es gibt hier bestimmt einige Leute die sich ihr Wine selbst kompilieren und dahbei einige Patches einspielen die gewisse Vorteile bringen.
Genau DIESE möchte ich hiermit ansprechen! :) Teilt euer wissen.. es gibt Menschen die keine Wine-Götter sind xD


mfg.

freaky-m0
Benutzeravatar
freaky-m0
 
Beiträge: 94
Registriert: 24.02.2008, 14:18

Beitragvon Cheeky@Boinc » 05.04.2008, 16:39

Wie man Wine kompiliert steht zumindest schonmal ansatzweise im Wiki. Das würde ich gerne überarbeiten, da ich ja schon mehrere scripte dafür erstellt habe, hab aber gerade keine Zeit.

Patches bekommst du generell in der Wine AppDB und dort direkt unter dem Artikel bei "Known bugs" als Anhang oder in einem "How to" darunter.
Diese brauchst du auch nur wenn das Spiel es nötig hat.
Meist kommen Patches auch direkt in den Wine Quellcode, viele sind aber inoffiziell und somit nicht unterstützt.

Anwenden kannst du patches auf den Quellcode per:

Code: Alles auswählen
cd /path/to/wine/source/directory
patch -p1 < /path/to/patch/file
<3 SuL <3
Benutzeravatar
Cheeky@Boinc
 
Beiträge: 7388
Registriert: 28.06.2006, 14:19
Wohnort: Werther
Lizenz: GPL

Beitragvon freaky-m0 » 05.04.2008, 16:43

Okay das heisst also wer auf der Suche nach Verbesserungen bzw. Patches für sein Spiel ist sollte immer auf der Wine AppDB nachsehen. Gibt es noch irgendwelche anderen Seiten die Patches (evtl. sogar speziell für Spiele) anbieten?

Patches die man als Wine Zocker allgemein immer anwenden sollte gibt es also keine?

Danke schonma für die flotte gute Antwort :)
Benutzeravatar
freaky-m0
 
Beiträge: 94
Registriert: 24.02.2008, 14:18

Beitragvon Cheeky@Boinc » 05.04.2008, 16:49

Gibt es noch irgendwelche anderen Seiten die Patches (evtl. sogar speziell für Spiele) anbieten?


Keine speziellen. Ausser vielleicht: [url=http://wine-review.blogspot.com/]wine-review.blogspot.com[/url]

Patches die man als Wine Zocker allgemein immer anwenden sollte gibt es also keine?


Nein.
<3 SuL <3
Benutzeravatar
Cheeky@Boinc
 
Beiträge: 7388
Registriert: 28.06.2006, 14:19
Wohnort: Werther
Lizenz: GPL

Beitragvon freaky-m0 » 05.04.2008, 17:37

Okay das mit dem Patchen wollte ich grad ausprobieren... der hier ist zwar nicht für ein Spiel aber trotzdem macht er mir Probleme ;)

Patch:
Code: Alles auswählen
--- dlls/comctl32/listview.c.orig2007-03-26 22:17:34.000000000 +0200
+++ dlls/comctl32/listview.c2007-03-26 23:00:19.000000000 +0200
@@ -3397,11 +3397,21 @@
assert (lpItem);
     }

-    /* we need to get the lParam and state of the item */
+    /* We need to get the lParam and state of the item.
+       However for virtual listviews, only query focus
+       and selection state, since the app must set the rest
+       anyway. Querying more can lead to a message loop. */
     item.iItem = lpLVItem->iItem;
     item.iSubItem = lpLVItem->iSubItem;
-    item.mask = LVIF_STATE | LVIF_PARAM;
-    item.stateMask = ~0;
+    if (infoPtr->dwStyle & LVS_OWNERDATA) {
+      item.mask = LVIF_STATE;
+      item.stateMask = (LVIS_FOCUSED | LVIS_SELECTED);
+    }
+    else
+    {
+      item.mask = LVIF_STATE | LVIF_PARAM;
+      item.stateMask = ~0;
+    }
     item.state = 0;
     item.lParam = 0;
     if (!isNew && !LISTVIEW_GetItemW(infoPtr, &item)) return FALSE;
@@ -5285,8 +5295,14 @@
     {
dispInfo.item.state = 0;

-/* apparently, we should not callback for lParam in LVS_OWNERDATA */
-if ((lpLVItem->mask & ~(LVIF_STATE | LVIF_PARAM)) || infoPtr->uCallbackMask)
+/* Apparently, we should not callback for lParam in LVS_OWNERDATA.
+   Also, do not callback when only querying focus and selection states
+   when they have no callback entries. */
+if ( !( (lpLVItem->mask == LVIF_STATE) &&
+          (lpLVItem->stateMask & (LVIS_FOCUSED | LVIS_SELECTED)) &&
+          !(infoPtr->uCallbackMask & (LVIS_FOCUSED | LVIS_SELECTED)) ) &&
+     ((lpLVItem->mask & ~(LVIF_STATE | LVIF_PARAM)) || infoPtr->uCallbackMask)
+   )
{
     /* NOTE: copy only fields which we _know_ are initialized, some apps
      *       depend on the uninitialized fields being 0 */




Ausgabe:

Code: Alles auswählen
cant find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- dlls/comctl32/listview.c.orig     2007-03-26 22:17:34.000000000 +0200
|+++ dlls/comctl32/listview.c   2007-03-26 23:00:19.000000000 +0200
--------------------------
File to patch:          
Benutzeravatar
freaky-m0
 
Beiträge: 94
Registriert: 24.02.2008, 14:18

Beitragvon freaky-m0 » 05.04.2008, 17:54

nun gut ich hab jetz ma manuell den Pfad dann in den folgenden Prompt eingegeben und er sagte das er gepatcht hat.. mal sehen ;)
Benutzeravatar
freaky-m0
 
Beiträge: 94
Registriert: 24.02.2008, 14:18

Beitragvon Zappo » 06.04.2008, 08:16

Wenn er die Datei nicht findet, solltest du dir mal die manpage von patch durchlesen (speziell die Bedeutung von -p). Damit kannst du die manuelle Eingabe des Verzeichnisses garantiert umgehen.
[img]http://www.boincstats.com/signature/user_6724.gif[/img]
Benutzeravatar
Zappo
 
Beiträge: 65
Registriert: 26.03.2008, 19:48
Lizenz: CC
Distribution: ArchLinux
Kernelversion: neueste


Zurück zu Spiele unter WINE, Cedega & CrossOver Games

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 28 Gäste