LinuxForum.Fans
Тема

патч для wine

Автор: foozzi 12 сообщений 2971 просмотров
#166918

Вобщем есть у меня патчик для wine

text
--- wine-0.9.55/dlls/wined3d/directx.c    2008-01-11 21:25:55.000000000 +0500
+++ wine-0.9.55-rm/dlls/wined3d/directx.c    2008-01-15 00:21:01.660016037 +0500
@@ -2183,6 +2183,7 @@
                                       WINED3DDEVCAPS_HWRASTERIZATION     |
                                       WINED3DDEVCAPS_TEXTUREVIDEOMEMORY  |
                                       WINED3DDEVCAPS_TEXTURESYSTEMMEMORY |
+                                      WINED3DDEVCAPS_TEXTURENONLOCALVIDMEM |
                                       WINED3DDEVCAPS_CANRENDERAFTERFLIP  |
                                       WINED3DDEVCAPS_DRAWPRIMITIVES2     |
                                       WINED3DDEVCAPS_DRAWPRIMITIVES2EX   |

но вот куда этот код вставлять то?? у меня wine установленый из .deb пакета

#166922

cd /usr/src
apt-get source wine
находим
dlls/wined3d/directx.c
после
WINED3DDEVCAPS_TEXTURESYSTEMMEMORY |
добавляем
WINED3DDEVCAPS_TEXTURENONLOCALVIDMEM |

после
dpatch apply-all
dpkg-buildpackage
cd ..
смотрим создался deb пакет. Делаем
dpkg -i name

Это всё очень коротко

#166925

на всякий случай наводящий вопрос: foozzi, вы уверены, что он вам нужен/поможет? а то посмотрите на версию и на год....

#166926

это пример, все нормально спасибо

#166927

Да вот все хорошо только это не могу понять, тут написано http://romanrm.ru/wine-from-source как делать но проблема в том что я не могу понять как выполнить это

Применение патчей

Часто, причиной сборки программ из исходных кодов является желание получить версию программы, в которой включены некие неофициальные изменения (патчи). Предположим, они находятся одним уровнем выше каталога с локальным репозиторием Git. Тогда, находясь внутри этого каталога, для их применения следует выполнить:
text
patch -p1 -N < ../SomePatchFile.patch

#166928
foozzi написал:
Да вот все хорошо только это не могу понять, тут написано http://romanrm.ru/wine-from-source как делать но проблема в том что я не могу понять как выполнить это

покажите ls в каталоге откуда выполняете комманду и сам патч, если тот был примером...

#166929

[console]
foozzi@foozzi-hacker:~$ ls /home/foozzi/wine/.git/
branches description hooks info MouseWarpOnRmbDownHackV4.patch refs
config HEAD index logs packed-refs
[/console]

патч

text
--- wine-1.1.3/dlls/dinput/mouse.c    2008-08-24 03:13:36.924717247 +0600
+++ wine-1.1.3-rm/dlls/dinput/mouse.c    2008-08-24 03:19:25.240715877 +0600
@@ -49,12 +49,15 @@
 static const IDirectInputDevice8AVtbl SysMouseAvt;
 static const IDirectInputDevice8WVtbl SysMouseWvt;
 
+int rmb_down_since;
+
 typedef struct SysMouseImpl SysMouseImpl;
 
 typedef enum
 {
     WARP_DEFAULT,
     WARP_DISABLE,
+    WARP_RMB,
     WARP_FORCE_ON
 } WARP_MOUSE;
 
@@ -203,6 +206,8 @@
     {
         if (!strcasecmp(buffer, "disable"))
             newDevice->warp_override = WARP_DISABLE;
+        else if (!strcasecmp(buffer, "rmb"))
+            newDevice->warp_override = WARP_RMB;
         else if (!strcasecmp(buffer, "force"))
             newDevice->warp_override = WARP_FORCE_ON;
     }
@@ -329,9 +334,18 @@
                 wdata = pt1.y;
             }
 
+            if(This->warp_override == WARP_RMB) {
+                This->need_warp = 0;
+                if(This->m_state.rgbButtons[1]){
+                    if(GetCurrentTime()-rmb_down_since>100){
+                        This->need_warp = (pt.x || pt.y);
+                    }
+                }
+            } else {
             This->need_warp = This->warp_override != WARP_DISABLE &&
                               (pt.x || pt.y) &&
                               (dwCoop & DISCL_EXCLUSIVE || This->warp_override == WARP_FORCE_ON);
+            }
             break;
         }
         case WM_MOUSEWHEEL:
@@ -348,6 +362,7 @@
         break;
     case WM_RBUTTONDOWN:
             inst_id = DIDFT_MAKEINSTANCE(WINE_MOUSE_BUTTONS_INSTANCE + 1) | DIDFT_PSHBUTTON;
+            if(This->warp_override == WARP_RMB) rmb_down_since = GetCurrentTime();
             This->m_state.rgbButtons[1] = wdata = 0x80;
         break;
     case WM_RBUTTONUP:
#166931

Да наложи вручную и всё.

#166932

уметь бы( объясни как

#166933

открой файл
/dlls/dinput/mouse.c

там увидишь такую же структуру
Например там так

text
 typedef struct SysMouseImpl SysMouseImpl;
 
 typedef enum
 {
     WARP_DEFAULT,
     WARP_DISABLE,
+    WARP_RMB,
     WARP_FORCE_ON
 } WARP_MOUSE;

Из патча видно где + значиться добавить!

Должно получиться вот так

text
int rmb_down_since;

typedef struct SysMouseImpl SysMouseImpl; typedef enum { WARP_DEFAULT, WARP_DISABLE, WARP_RMB, WARP_FORCE_ON } WARP_MOUSE;

Просто патчи не всегда накладываются гладко.
Либо жди гентушников они скажут точнее.

#166935

отредактировал, ток теперь как мне этот файл вставить в уже установленный wine ?

Войдите или зарегистрируйтесь, чтобы ответить.