GTK+ 2.24.8

2011-11-10 Thread Alexander Larsson
GTK+ 2.24.8 is now available for download at:

 http://download.gnome.org/sources/gtk+/2.24/
 ftp://ftp.gnome.org/pub/GNOME/sources/gtk+/2.24/

ac2325a65312922a6722a7c02a389f3f4072d79e13131485cc7b7226e2537043  
gtk+-2.24.8.tar.bz2
8a3b29f667933cf52eea2db7b066723edbc80443ca9c75b7cd7cbe8c8b90b93c  
gtk+-2.24.8.tar.xz

This is a bug fix release in the stable 2.24 series.



GTK+ is a multi-platform toolkit for creating graphical user
interfaces. Offering a complete set of widgets, GTK+ is suitable for
projects ranging from small one-off tools to complete application
suites.

GTK+ has been designed from the ground up to support a range of
languages, not only C/C++. Using GTK+ from languages such as Perl and
Python (especially in combination with the Glade GUI builder) provides
an effective method of rapid application development.

GTK+ is free software and part of the GNU Project. However, the
licensing terms for GTK+, the GNU LGPL, allow it to be used by all
developers, including those developing proprietary software, without
any license fees or royalties.


Overview of Changes from GTK+ 2.24.7 to 2.24.8
==

* Win32 updates:
 Major update of the win32 backend, it now works
 at least as well as the old 2.16.x version that
 a lot of windows applications was forced to use

 Some particular highlights:
 - Tablet support (wintab) works
 - The MS-Windows theme works better, and is enabled
   by default on Windows
 - Pointer grabs on button press now works
 - Initial Window positioning is improved and now
   works very similarly to the X11 backend
 - Scrolling a window with another window overlapping it
   doesn't produce rendering artifacts on XP
 - Configure event delivery after window move or resize
   is much more robust, fixing a variety of rendering hangs
   and misbehaviours
 - Scrolling with synaptics touchpads work better

* OS X updates:
 - Add Command-cursor keyboard navigation in text widgets
 - Fix loss of motion events after using the menu bar
 - Handle recursive CFRunLoops, fixing e.g. crashes
   when dropping files from finder
 - Set proper event-state values in all events

* Ensure that the MOD1 modifier always means ALT, as this
  assumption is already used in many places in Gtk+

* Search engine backend updated to Tracker 0.12

* Bugs fixed:
  84314  gdk_display_sync() and gdk_flush()
 142874  use of SetWindowLong in gdkwindow-win32.c causes...
 169811  configure_event and window-state-event are not...
 171456  Keep Above option in Gimp broken on Win32 
 324254  Realizing a top-level window widget early positions...
 516822  gtk_window_fullscreen does not resize correctly if...
 537296  Maximizing a window larger than the screen makes...
 542777  Scroll-Wheel doesn't scroll (Win)
 552041  Windows' System Menu from taskbar is buggy 
 574935  win32: gtk_window_set_geometry_hints() has no effect...
 604156  gtk_window_set_modal() freezes application completely 
 612359  Dialog positioning hints fail on Windows 7 
 631384  Images pasted from clipboard are shifted/wrapped 
 647460  typo in msw_style.c?
 650300  Notebook tabs are incorrectly displayed with the...
 658272  Port gtksearchenginetracker.c to tracker 0.11/0.12
 659565  unbreak compilation on OpenBSD
 661997  Gtk crashes when changing the TreeView model while ...
 662633  Scheduled transaction editor crashes with gtk+-2.24.7
 662670  Pressing Enter in print dialog box will not cause...
 663138  iconview: layout items immediately when setting...
 663182  NSImage throws an exception from _gtk_quartz_...
 663543  Huge memory leak while using MS-Windows theme (gtk-demo)
 663605  Fix event-state of many event types on quartz

November 10, 2011
Alexander Larsson
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: struggling with the non-recursive gdk_threads_enter

2009-01-04 Thread Alexander Larsson
On Tue, 2008-12-30 at 21:47 -0500, Yu Feng wrote:
 Dear Devels:
 
 I am having troubles because the GMutex used gdk_threads_enter/leave can
 be non-recursive.
 
 I have a piece of code (g_module_check_init) to either be called from an
 event dispatched by GDK(if the module is loaded via GtkSettings) or be
 called directly without entering the GDK critical section(if the module
 is loaded via GTK_MODULE).
 
 The code need to be protected so that its execution is not interrupted
 by GDK activities in other threads. How can I do this without a
 recursive gdk critical section?

IMHO that is a Gtk+ bug. When loading the modules from GTK_MODULE it
should take the Gdk lock in order to provide the same behaviour in both
cases. The way its currently set up means its impossible to get module
loadind gdk-thread-safe in all cases. 

Its not really possible to drop the lock in the other case, so the only
solution is to take the lock in this case. Its also in line with general
Gtk+ behaviour to automatically have the gdk lock held when calling out
to external code.


___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: Asyncronous life helper (Was: EggDBus)

2008-12-27 Thread Alexander Larsson
On Sat, 2008-12-27 at 04:21 -0500, Freddie Unpenstein wrote:
 This is a side-topic, raised by developments in handling DBus, but
 something I feel is worth asking... Is there any mechanism for making
 working with asynchronous stuff easier?
 
 Quite often I've had a situation where I've needed to collect several
 pieces of information from various asynchronous sources, and then act
 on them as a group only once some portion of that information is
 available. This is becoming increasingly important as we start working
 with more and more remote DBus services, web services,
 Corba/Orb/whatever-its-presently-called services, and the list goes
 on. Data life cycle and flow management keeps being a problem.
 
 You need to:
 - use a signal to catch data when it becomes available
 - store that data somewhere
 - distribute that data to other places when it becomes available
 - clean up the data when it's no longer needed
 - safely handle data sources failing or disappearing
 - manage re-try timeouts, age invalidation timeouts, etc.
 
 I sort of feel that what's needed, is a GWish which is a higher-level
 GBoxed embodying the whole data life cycle management, and I'm
 wondering whether there are any plans or similar ideas in the works,
 or even just whether anyone else has a working example of tackling a
 similar situation.
 
 My starter concept is this; GWish will
 - hold a piece of data, when it's available
 - can be asked to obtain its data if it doesn't have it
 - can be dependant on other GWish's (dependant data)
 - ask any depedant GWishes for theirs when it is asked
 - invoke a callback when ALL dependant data is available
 - can be given the data to hold at any time (usually by the callback)
 - signal when its data is ready (ie. when its data is set)
 - only ask dependant GWish's when it itself is asked
 - provide a helper function to perform the ask, and then wait
 - allow the data to be invalidated without destroying the GWish
 - be used internally (or at least faked externally) by async
 properties
 - propagate data invalidation (unless blocked by a flag or ignored)
 - allow some dependant data to be flagged as optional
 - allow the data set callback to fail after requesting more data
 - optionally count a dependency as a reference on that GWish
 - use weak references to clean up non-referencing dependencies
 - support relevant timeouts with automatic timeout cleanup
 - optionally destroy itself if a dependancy gets destroyed
 
 An application can then tie together various pieces of required data
 from any source (either GWish-compatible or wrapped in an external
 GWish), even user interaction, by having the final GWish dependant on
 other GWishes, some representing other intermediate shared data, and
 others representing source data, or simply stages of processing to
 ensure certain events occur in order regardless of what order their
 data becomes available.

This sounds quite nice actually. There are many cases where something
like this would have helped me.

Another possible name for this is GFuture, as such objects are about
information or other things that'll be availible in the future.

One major problem about doing things like this in C is that you
constantly have to define and allocate small structs to keep the data
you need for the completo operation. If we could somehow make this
easier that would be a large win. I don't know a great approach to do
that offhand though. Some form of user data is one possibility, but I'd
really like it to betype safe and without using strings as API.

I guess a GFuture/GWish needs to be some form of container that you can
grow in size by adding a struct of your own data to it. Maybe we can do
it via a macro g_future_push_struct (future, struct LocalOpData,
free_op_data) which grows the size of the object and puts the struct at
the end. You'll pop it at end to free it.

Of course, such serial/stack-like data management might not be general
enought to handle things like parallel async operations. Maybe just a
way to add the struct (undefined where) to the GFuture and then you'll
get a pointer to the struct inside the GFuture in the completion
callback...

___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list