fixes.diff

Patch V2 - Qantourisc, 01/29/2011 09:39 am

Download (4.2 kB)

b/code/nel/src/3d/driver/opengl/unix_event_emitter.cpp Sat Jan 29 09:36:57 2011 +0100
25 25
#include <X11/Xutil.h>
26 26
#include "nel/misc/debug.h"
27 27

  
28

  
29 28
typedef bool (*x11Proc)(NL3D::IDriver *drv, XEvent *e);
30 29

  
31 30
static Atom XA_CLIPBOARD = 0;
......
159 158

  
160 159
void CUnixEventEmitter::emulateMouseRawMode(bool enable)
161 160
{
162
	_emulateRawMode = enable;
163

  
164
	if(_emulateRawMode)
161
	if(!_emulateRawMode and enable)
165 162
	{
166 163
		XWindowAttributes xwa;
167 164
		XGetWindowAttributes(_dpy, _win, &xwa);
165
		
166
		Window root,child;
167
		int root_x,root_y;
168
		int win_x,win_y;
169
		unsigned int mask;
170
		bool inwindow;
171
		inwindow = XQueryPointer(_dpy, _win, &root, &child, &root_x, &root_y, &win_x, &win_y, &mask);
172
		_preRawX=win_x;
173
		_preRawY=win_y;
174

  
168 175
		XWarpPointer(_dpy, None, _win, None, None, None, None,
169 176
			(xwa.width / 2), (xwa.height / 2));
170 177

  
......
174 181
		XEvent event;
175 182
		while(XCheckIfEvent(_dpy, &event, &isMouseMoveEvent, NULL)) { };
176 183
	}
184
	if(_emulateRawMode and !enable)
185
	{
186
		XWarpPointer(_dpy, None, _win, None, None, None, None,
187
			_preRawX, _preRawY);
188
		// remove all outstanding mouse move events, they happened before the mouse
189
		// was pulled back to 0.5 / 0.5, so a wrong movement delta would be
190
		// reported otherwise
191
		XEvent event;
192
		while(XCheckIfEvent(_dpy, &event, &isMouseMoveEvent, NULL)) { };
193
	}
194
	_emulateRawMode = enable;
177 195
}
178 196

  
179 197
#ifndef AltMask
b/code/nel/src/3d/driver/opengl/unix_event_emitter.h Sat Jan 29 09:36:57 2011 +0100
106 106
	std::map<TKey, bool>	_PressedKeys;
107 107
	XIM						_im;
108 108
	XIC						_ic;
109
	bool					_emulateRawMode;
110 109
	NL3D::IDriver*			_driver;
111 110
	CUnixEventServer		_InternalServer;
112 111
	ucstring				_CopiedString;
113 112
	bool					_SelectionOwned;
113
	bool					_emulateRawMode;
114
	int					_preRawX;
115
	int					_preRawY;
114 116
};
115 117

  
116 118

  
b/code/ryzom/client/src/events_listener.cpp Sat Jan 29 09:36:57 2011 +0100
30 30
#include "input.h"
31 31
#include "interface_v3/interface_manager.h"
32 32

  
33

  
34 33
using namespace NLMISC;
35 34

  
36 35
extern CActionsManager Actions;	// Actions Manager.
......
263 262

  
264 263
	if (ClientCfg.FreeLookSmoothingPeriod == 0 || !_MouseSmoothingOn)
265 264
	{
266
		_MouseDeltaAX = x * ClientCfg.FreeLookSpeed;
267
		_MouseDeltaAY = y * ClientCfg.FreeLookSpeed;
265
		_MouseDeltaAX += x * ClientCfg.FreeLookSpeed;
266
		_MouseDeltaAY += y * ClientCfg.FreeLookSpeed;
268 267
		_FreeLookSmoothed = false;
269 268
	}
270 269
	else
......
307 306
	{
308 307
		_MouseAngleX = true;
309 308
	}
310
	else
311
	{
312
		_MouseAngleX = false;
313
	}
314 309

  
315 310
	// If mouse pos Y changed.
316 311
	if (fabs(_MouseDeltaAY) > epsilon)
317 312
	{
318 313
		_MouseAngleY = true;
319 314
	}
320
	else
321
	{
322
		_MouseAngleY = false;
323
	}
324 315
}
325 316

  
326 317
// ***************************************************************
......
337 328
	// If Mouse pos X changed.
338 329
	if(_MouseX != _OldMouseX)
339 330
		_MouseMoveX = true;
340
	else
341
		_MouseMoveX = false;
342 331

  
343 332
	// If Mouse pos Y changed.
344 333
	if(_MouseY != _OldMouseY)
345 334
		_MouseMoveY = true;
346
	else
347
		_MouseMoveY = false;
348 335
}
349 336

  
350 337
//---------------------------------------------------
......
426 413
//---------------------------------------------------
427 414
float CEventsListener::getMouseAngleX()
428 415
{
429
	return _MouseDeltaAX;
416
	float MouseDelta=_MouseDeltaAX;
417
	_MouseDeltaAX=0.f;
418
	return MouseDelta;
430 419
}// getMouseAngleX //
431 420

  
432 421
//---------------------------------------------------
......
434 423
//---------------------------------------------------
435 424
float CEventsListener::getMouseAngleY()
436 425
{
437
	return _MouseDeltaAY;
426
	float MouseDelta=_MouseDeltaAY;
427
	_MouseDeltaAY=0.f;
428
	return MouseDelta;
438 429
}// getMouseAngleY //
439 430

  
440 431
// ***************************************************************************