Commit Graph

352 Commits

Author SHA1 Message Date
Robert Osfield
8ae30c9bfc Refactored the inclusion of the headers in the ADD_LIBRARY so that they aren't
added under OSX.
2008-04-23 20:50:53 +00:00
Robert Osfield
448cd50546 From Stephan Huber, "the support for the new mightymouse and new touchpads was incomplete in GraphicsWindowCarbon. Attached is a fixed version." 2008-04-22 14:15:24 +00:00
Robert Osfield
922dcb0423 Added new computation of time to allocate to flushing deleted and compiling OpenGL objects per frame. 2008-04-16 18:13:41 +00:00
Robert Osfield
d2196c02bc From Jason Beverage, "The following changes fix the flickering issue I'm seeing when trying to externally manage my cursor in Win32. If you set the cursor to InheritCursor, GraphicsWindowWin32 ignores WM_SETCURSOR and assumes you will set the cursor yourself." 2008-04-15 19:46:29 +00:00
Robert Osfield
76e0198007 From Philipp Machler, "We have extended the support for Wacom Tablet devices:
- Mac OS X
  - not only pressure, but tilt and z-rotation is supported now
"
2008-04-11 13:28:09 +00:00
Robert Osfield
11f9575b24 From Melchior Franz, "The GUIEventAdapter header file had KeySymbols for the super and
hyper keys defined already, but these modifiers were missing in
GUIEventAdapter::ModKeyMask, and the EventQueue ingored them as well.

The attached diff/archive adds the missing parts for Super/Hyper
modifier key support.


I'm aware that this might not be supported on all systems/keyboards
out of the box, but decided to submit it anyway because:

- developers are aware of differences between input devices
 (Some mice have scroll wheels, others don't. Some have five or
 more buttons, some have only one. Some keyboards don't have
 numpads, some have AltGr, some don't etc.)

- even if someone relies on Hyper/Super in distributed software,
 this is easy to fix and doesn't create lock-in conditions

- while the names Hyper/Super may only be common on X11, they are
 just symbol names and not OS-specific

- even though some systems might not offer these additional modifiers
 by default, it's likely that all of them have at least 8 modifier
 levels internally, so it should only be a matter of OS configuration
 to make them work

- having super/hyper available is useful to offer a user ways
 to define local key definitions that are safe from collisions with
 predefined "official" key assignments"
2008-04-11 11:10:12 +00:00
Robert Osfield
6429937fce From Colin McDonald, fixed typo. 2008-04-11 10:31:49 +00:00
Robert Osfield
fe5c019608 From Colin McDonald, "The X11WindowingSystemInterface in osgViewer/GraphicsWindowX11.cpp
unconditionally sets the X11 error handler routine, replacing anything
that was previously set.  This is a bit unfriendly, as the X11 error
handler is a global attribute which the application, or the GUI toolkit
being used, may well have set itself.

So I have modified X11WindowingSystemInterface to only replace the error
handler if it is the default i.e. if the application has not set it."
2008-04-03 18:06:09 +00:00
Robert Osfield
f9f7770336 From Tatsuhiro Nishioka and Stephan Huber, bug fixes and enhancement of cursor suppoort. 2008-04-01 10:00:39 +00:00
Robert Osfield
31c6115d73 Added checks for a valid scene graph before doing various ops on it. 2008-03-31 16:23:52 +00:00
Robert Osfield
f50b9a3c79 Added limits.h to try and avoid gcc 4.3 compile problems 2008-03-25 13:06:57 +00:00
Robert Osfield
f5f29a03c1 From Melchoir Franz, "osgViewer toggled the NumLock state correctly when pressing the NumLock
key, but it didn't pick up the initial state. So, if NumLock was on for
the OS at startup (LED on), it was still off for OSG. And the first
keypress turned the LED off, and NumLock on for OSG. The attached fix
picks up the state on every FocusIn, just like it was done in the last
commits for CapsLock. The difference is, that the NumLock mask isn't
standardized (e.g. 0x10 for Linux, and 0x80 for AIX), so we have to do
a reverse lookup (::rescanModifierMapping()).

Note that I could not reproduce the problem on my system, but someone
else confirmed it twice on his, and the patch fixed it for him.

Changed files:
 ./include/osgViewer/api/X11/GraphicsWindowX11
 ./src/osgViewer/GraphicsWindowX11.cpp

"
2008-03-19 21:05:38 +00:00
Robert Osfield
45bd3802de From Melchior Franz, "Attached is a fix for remaining problems in capslock handling:
It sets osgGA's keymask when restoring keys on FocusIn, according
to the state values of XKeyEvent and XCrossingEvent. (These are
the only source for X11's current capslock state that avoids
pulling in the XKB extension.)
"
2008-03-14 15:13:08 +00:00
Robert Osfield
a460d66533 From Melchoir Franz, Caps lock support under X11 2008-03-13 16:12:46 +00:00
Robert Osfield
bc406c8bf0 From Jean-Sebastien Guay, "
The problem can be reproduced by simply changing the osgpick example to
use a CompositeViewer with a single view initialized using
setUpViewAcrossAllScreens(). I have attached a modified osgpick.cpp so
you can test it out quickly (please don't check this file in though :-)
) The eventState is then incorrect and picking does not work. The only
changes are in CompositeViewer.cpp (eventTraversal() method), and fix
the problem for me.
"
2008-03-04 17:57:06 +00:00
Robert Osfield
9d0c950bb0 From Colin McDonald, "Attached is an updated to osgViewer::PixelBufferWin32.
The win32 pbuffer implementation returned an error unless both the
WGL_ARB_pbuffer and the WGL_ARB_render_texture functions were present.
This was too restrictive, as a pbuffer can usefully be created without
render-to-texture, e.g. for use with glReadPixels.  The osg 1.2/Producer
pbuffers worked without RTT, and osgUtil::RenderStage has all the code to
handle both RTT and non-RTT pbuffers, doing a read and copy in the
latter case.

With these changes I have successfully tested the osgprerender example
on a graphics card which supports RTT, and one which doesn't.  Plus
tested in my own application.

In order to aid diagnostics I have also added more function status
return checks, and associated error messages.  I have included the win32
error text in all error messages output.  And there were some errors
with multi-threaded handling of "bind to texture" and a temporary window
context which I have corrected.

These is one (pre-existing) problem with multi-threaded use of pbuffers
in osgViewer & osgprerender, which I have not been able to fix.  A win32
device context (HDC) can only be destroyed from the thread that created
it.  The pbuffers for pre-render cameras are created in
osgUtil::RenderStage::runCameraSetUp, from the draw thread.  But
closeImplementation is normally invoked from the destructor in the main
application thread.  With the additional error messages I have added,
osgprerender will now output a couple of warnings from
osgViewer::PixelBufferWin32::closeImplementation() at exit, after
running multi-threaded on windows.  I think that is a good thing, to
highlight the problem.  I looked into fixing it in osgViewer::Renderer &
osgUtil::RenderStage, but it was too involved for me.  My own
application requirements are only single-threaded.

Unrelated fix - an uninitialised variable in
osg::GraphicsThread::FlushDeletedGLObjectsOperation().
"
2008-03-04 16:39:44 +00:00
Robert Osfield
ca513efc1d Added LODScaleHandler 2008-02-28 20:02:43 +00:00
Robert Osfield
e26579b0ec Moved the delete operations to before of the compile operations to ensure that
delete operations don't get pushed out by allocations
2008-02-28 17:59:44 +00:00
Robert Osfield
fdb6b31452 From Melchior Franz, fixed handling of modified keys when entering/leaving window 2008-02-25 17:30:30 +00:00
Robert Osfield
a3a5af18b0 From Franz Melchior, "When switching virtual desktops or minimizing a window, keys
remain in pressed state after revealing, even if they are no
longer pressed on the keyboard. This can have bad effects,
especially if the stuck keys are modifier keys. One has to
press and release the stuck keys again to reset the wrong state.

The fix keeps track of all key presses and releases. On FocusOut
and UnmapNotify it releases all keys that are in pressed state,
and on KeymapNotify (following a FocusIn), it sets the currently
pressed keys again. To avoid confusion in the OSG-using application
normal keys are always reported released /before/ and pressed
/after/ modifier keys.

As current key states are returned as char[32] keymap by
XQueryKeymap and XKeymapEvent, this format is also used to
recognize modifier keys and for maintaining the current
internal key state. Functions to set/clear/query bits in
such a keymap are added.

The patch was extensively tested with osgkeyboard and
FlightGear under KDE and fvwm2. It was not tested on a
Xinerama setup or with multiple windows, but as _eventDisplay
is used throughout, there should be no problems. The patch also
makes the following changes:

- removes old and obsolete handling of modifier keys in ::adaptKey().
 This wasn't only unused, but also wrong (and for that reason commented
 out in revision 7066). The modifier states are actually handled
 in ./src/osgGA/EventQueue.cpp (EventQueue::keyPress/keyRelease).
- fixes some spelling"
2008-02-25 16:50:28 +00:00
Robert Osfield
fb1b58b2e2 From Stephan Huber, "I missed a refactoring of the handling of modifier-keys, so they did not
work on OS X. Attached you'll find the missing implementation for OS X."
2008-02-25 16:05:53 +00:00
Robert Osfield
3333ca2b46 From Mathias Froehlich, "I have extended the X11 pbuffer code to use either the complete set of glx 1.3
pbuffer functions or exactly ask for the extensions we need to call the
apropriate glx extension functions for and around pbuffers extensions.
The glx 1.3 version of this functios are prefered. If this is not pressent we
are looking for the glx extensions and check for them.
Prevously we just used some mix of the glx 1.3 functions or the extension
functions without making sure that this extension is present.
"
2008-02-22 18:38:30 +00:00
Robert Osfield
8e5c3363ef From Stephan Huber, "Attached you'll find some enhancements by Adrian Egli and me for the
carbon-implementation of GraphicsWindow.  Now you can use an AGLDrawable
in conjunction with osgViewer/osgCompositeViewer."

Changes from Robert Osfield, changed std::cout to osg::notify(osg::INFO)
2008-02-18 15:30:55 +00:00
Robert Osfield
046481ee6e From Bryan Thrall, "moved the prints to a higher notify level
(DEBUG_FP) so they are only printed at the most verbose level."
2008-02-18 13:47:38 +00:00
Robert Osfield
051259760a Added explict casts to double to prevent VS compiler error 2008-01-28 19:42:16 +00:00
Robert Osfield
b45e32afc9 From Stephan Huber, added support for double click event for OSX. 2008-01-28 16:38:39 +00:00
Robert Osfield
54129105a4 Added projectorMatrix parameter support to *SphericalDisplay setup functions and .view, this allows one
to flip, rotate, or turn up side the position of the projector.  Note, projector at base of display is the default.
2008-01-28 15:41:42 +00:00
Robert Osfield
2db7fe500f Added include RenderLeaf to make sure #define's are defined correctly 2008-01-28 15:36:28 +00:00
Robert Osfield
9bae59bd6e Added setting of UpdateVisitor's FrameStamp and TraversalNumber in updateTraversal() 2008-01-09 14:22:44 +00:00
Robert Osfield
92f7f4c3f5 Replaced values.h with float.h is avoid Windows compile issues 2007-12-25 21:11:27 +00:00
Robert Osfield
93127866a8 From Sid Byce, fixes for compiling with gcc 4.3 2007-12-24 15:19:52 +00:00
Robert Osfield
0f2959ce69 From Jeremy Moles, "Here is a implementation of setScreeResolution and
setScreenRefreshRate for systems support Xrandr. The include CMakeFile
makes this optional, and turns it OFF by default, in which case any
person trying to use these functions under Linux will be instructed to
build osgViewer w/ Xrandr support.
"
2007-12-21 13:32:13 +00:00
Robert Osfield
49696d776a From Stephan Huber, "attached you'll find an updated carbon-implementation, which implements
the missing functionality for setWindowName and useCursor
"
2007-12-17 10:24:20 +00:00
Robert Osfield
43611a6ff5 commented out rendudent warning 2007-12-15 17:15:05 +00:00
Robert Osfield
6cca3b8f49 Added a osgViewer::setSceneData(ref_ptr<Node>) method. 2007-12-12 17:59:06 +00:00
Robert Osfield
f779c3a71a From Mathias Froehlich, "Attached is a change to the PBuffer initialsation code that checks for the GLX
version before issuing commands that require GLX-1.3.

This prevents a crash with open source drivers on linux.
"
2007-12-11 14:39:15 +00:00
Robert Osfield
f4afa427a7 From Roland Smeenk, "Attached you will find a large set of small typo fixes (mainly in the comments)." 2007-12-10 17:30:18 +00:00
Robert Osfield
a45d7fdee4 From Aderian Egli, changed the window dimension clamping code to work independantly for width and height. 2007-12-09 12:19:06 +00:00
Robert Osfield
cdb9a0baec From Donald Cipperly, Fixed memory leak in computeIntersections 2007-12-08 15:08:32 +00:00
Robert Osfield
c07598dc39 From Hautio Jari, "Current version of GraphicsWindowWin32 allows resize to zero height
window. This breaks rendering in for example MFC SDI applications and in
MFC MDI applications if user resizes the window so that client area has
zero height. Current safeguard for minimized window:

LRESULT GraphicsWindowWin32::handleNativeWindowingEvent( HWND hwnd, UINT
uMsg, WPARAM wParam, LPARAM lParam )
...
       /////////////////
       case WM_MOVE    :
       case WM_SIZE    :
       /////////////////
...
               if (clientRect.bottom==0 && clientRect.right==0)
...

does not cover this situation. In these situations clientRect.bottom = 0
and clientRect.right > 0.

Quick fix to this is relax condition:
               if (clientRect.bottom==0 || clientRect.right==0)

Modified file is attached.

Tested with osgviewerMFC from 2.2.0 release (Windows XP sp2)

Before fix:
 - execute from command line osgviewerMFC.exe cow.osg.
 - the cow is rendered nicely.
 - resize window to zero height by dragging from bottom border upwards.
 - resize window back to original height
 - just blue screen, no cow

After fix:
 - execute from command line osgviewerMFC.exe cow.osg.
 - the cow is rendered nicely.
 - resize window to zero height by dragging from bottom border upwards.
 - resize window back to original height
 - the cow is where it is supposed to be.
"
2007-12-06 17:41:20 +00:00
Robert Osfield
6c09a22957 From Cedric Pinson, fixes for toggle fullscreen on gnome desktop 2007-12-06 17:28:29 +00:00
Robert Osfield
b7a26ae56a Changed the spherical display intensity map set up to use colours rather than
a second texture unit.
2007-10-31 12:55:59 +00:00
Robert Osfield
c761efb371 Fixed wrap mode for panoramic display. 2007-10-31 11:06:33 +00:00
Robert Osfield
aaceb957bc Removed redundent X11/Intrinsic include 2007-10-17 19:01:18 +00:00
Robert Osfield
a5f37a23e2 From Andy Skinner, build fixes for Solaris. 2007-10-05 09:10:04 +00:00
Robert Osfield
90eaf41007 Added return 0 to fix warning 2007-10-03 08:34:51 +00:00
Robert Osfield
caeed02f52 Merged the threading set up and rendering code from Viewer and CompositeViewer
into ViewerBase to allow CompositeViewer to inherit the same theading models
previously just supported by osgViewer::Viewer
2007-10-02 21:23:58 +00:00
Robert Osfield
65e3591ed2 From David Callu, various fixes for window inheritance 2007-10-01 11:02:02 +00:00
Robert Osfield
65ac804b7d Changed requestWarpPointer to use _eventDislay to avoid crash in osghanglide example due
to async usage.
2007-10-01 09:41:05 +00:00
Robert Osfield
48f19b72bd Added support for CompositeViewer to WindowSizeHandler, ThreadingHandler, RecordCameraPathManipulator and HelpHandler. 2007-09-30 19:27:31 +00:00