James Turner [Wed, 25 Sep 2013 15:31:10 +0000 (16:31 +0100)]
Parallel sync of items.
When using built-in sync code, separate items into distinct slots.
Slots process items sequentially, but each slot works in parallel (using
a single shared HTTP engine). This allows tiles to be synced in parallel
with airports/shared models data, greatly increasing responsiveness
to get tiles synced on initial launch.
James Turner [Mon, 23 Sep 2013 17:20:16 +0000 (18:20 +0100)]
Rename WaitingTile to WaitingSyncItem.
We already synchronise other things besides tiles, and will soon want different
behaviour based on the type of item we're syncing (so we can synchronize some items in parallel). Rename the struct to be clearer, and add an enum encoding the type of item for future use.
James Turner [Thu, 19 Sep 2013 21:07:41 +0000 (22:07 +0100)]
Attempting to fix import/export linkage on Windows.
Hopefully this tells the Expat headers not to do any clever
declspec(import) or export stuff, which we don't want since we only
use the symbols within SimGearCore, and don't export them.
James Turner [Thu, 19 Sep 2013 20:42:28 +0000 (21:42 +0100)]
Intermediate static libs have issues.
Switch back to including the bundled expat sources directly in the
targets, since transitive linking of static libs is very awkward.
Makes static build happy again (let's see what else breaks)
James Turner [Thu, 19 Sep 2013 19:12:32 +0000 (20:12 +0100)]
Move bundled Expat to new home.
Renamed bundled Expat headers to avoid any
possibility of accidental including system headers when
using bundled Expat, or vice-versa. Should help with SVN
crashes reported by Thomas.
James Turner [Mon, 24 Jun 2013 06:46:27 +0000 (07:46 +0100)]
Persistent SVN update cache.
Make the already present cache of updated URLs persistent, with a
definable lifetime, currently 24 hours. This ensures terrasync-ed
resources are checked less often (max once per day) instead of each
FGFS launch, which should greatly cut down requests to the backend.
James Turner [Tue, 25 Jun 2013 06:55:20 +0000 (07:55 +0100)]
HTTP Client improvements
- max connections limit, and parallel connections to a single host where possible.
(Will permit updating terrain and Models / Airports / data in parallel)
- add LGPL headers
- give HTTP::Client a private impl class, to keep header simple.
James Turner [Wed, 4 Sep 2013 07:32:05 +0000 (08:32 +0100)]
Ensure sglog() singleton is threadsafe.
Slightly simplistic, but definitiely correct, method
for ensuring singleton creation is threadsafe. Can
be optimised if lock contention is ever an issue.
Thomas Geymayer [Sat, 20 Jul 2013 13:45:02 +0000 (15:45 +0200)]
Canvas: Ensure all element types are initialized before first usage.
If setting properties on a group a check is performed if
this property exists on any possible child element, and
only if this is the case the property is stored in the
groups style.
Previously elements have been only initialized during
their first usage, leading to ignored styles if they
have been set on a parent element before instantiating
an instance of the actual element type.
Thomas Geymayer [Thu, 4 Jul 2013 12:11:54 +0000 (14:11 +0200)]
Canvas: Fix removing text elements.
Removing text elements failed due to prefering removing the
style property with the same name. Add a flag to each style
indicating whether it can be inherited. The text property
is only applicable to text elements and can not be inherited.
Now groups can not have a text property, avoiding the name
clash with the text element.
James Turner [Sat, 22 Jun 2013 10:59:42 +0000 (11:59 +0100)]
Fix pick callbacks on scenery.
Ensure pick callbacks work over the whole pick group, otherwise
the visible render group is hit first, and resolves to the ground
pick callback instead.
James Turner [Wed, 19 Jun 2013 22:58:57 +0000 (23:58 +0100)]
Windows SGPath::desktop() impl
Basic SHGetSpecialFolderPath wrapper, with dynamic
finding of the function since linking to shell32.dll
is painful. Obviously could be generalised to other
CSIDLs in the future.
Thomas Geymayer [Sat, 8 Jun 2013 09:28:49 +0000 (11:28 +0200)]
Restructure Canvas/PropertyBasedElement
Nodes inside the osg scenegraph now hold a strong reference to
the according canvas element. Canvas elements in turn now only
hold a weak reference to the according node. This simplifies
for example the canvas::Group as it does not need to keep a
list of children on its own anymore. This is now stored inside
the scenegraph (as it was already before).
The restructuring will also allow to use a canvas::Group for
the canvas gui inside FlightGear and share for example the
handling of stacking based on z-index.
Thomas Geymayer [Mon, 3 Jun 2013 21:39:11 +0000 (23:39 +0200)]
Canvas: clear event listeners on destroy
Removing all event listeneres on destroying a canvas
prevents circular references due to Nasal event listeners
keeping a reference to the canvas in their closure.
Also fix event handling with direct children of the root
group and add some more helpers to the Canvas.