File: ChangeLog

package info (click to toggle)
sigx 2.0.2-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,144 kB
  • ctags: 1,311
  • sloc: cpp: 3,103; ansic: 653; xml: 206; python: 65; makefile: 26
file content (395 lines) | stat: -rw-r--r-- 19,535 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
2005-11-08  Tim Mayberry  <tmayberr@redhat.com>

	* glibmmx: initial version.

2006-01-29	Klaus Triendl <klaus@triendl.eu>

	* completed the reengineering of the tunnel handling and implementation.
	  tunnels are now sigc++2.0 functor adaptors which eases their usage and 
	  integrates well in the sigc++'s way of doing things;
	* Additionally, the api is easier to use, open_tunnel accepts every kind
	  of functor, the type of arguments is deduced when the functor is called, 
	  i.e. tunnel functors are real sigc++ adaptors
	* tunnels can be synchronous or asynchronous.
	* renamed TunnelFunctor to TunnelContext
	* renamed TunnelFunctor(0..7) to tunnel_context (which is a template
	  specialization for different kind of tunnels
	* added tunnel_functor (note: this is not the former TunnelFunctor(0..7)
	  but is a sigc++ adaptor
	* changes to open_tunnel: 
	  - returns a tunnel_functor instead of a sigc::slot
	  - parameter reordering
	  - accepts every kind of functor
	  - an asynchronous/synhronous tunnel can be created by specifying the  
	    template argument GlibX::SYNC or GlibX::ASYNC; 
		asynchronous tunnels are created by default
	* removed call_it
	* removed template function tunnel(), tunnels can only be opened by
	  open_tunnel()
	* moved the Glib::Cond member from GlibX::Dispatcher to 
	  GlibX::StandardDispatcher because it was only used there

2006-05-28	Klaus Triendl <klaus@triendl.eu>

	* added threadsafe signaling on top of sigc++
	  1) Signal: a wrapper to a sigc::signal
	  2) SignalReference: a threadsafe reference to a Signal
	  3) ConnectionReference: a threadsafe reference to a sigc::connection
	* has now an interesting example: ipresolver
	* added option 'SHAREDLIB' to SConstruct to allow switching between shared
	  and static library builds
	* needs a boost::shared_ptr, added dependency to boost/shared_ptr.hpp

2006-06-04	Klaus Triendl <klaus@triendl.eu>

	* improved the documentation by grouping the classes and adding
	  documentation; still some work needs to be done, though

2006-06-05	Klaus Triendl <klaus@triendl.eu>

	* bugfix: synchronous TunnelContexts did not lock in the correct order
	  (tunnel() locked the mutex for the condition after and invoke())
	* bugfix: Dispatcher ctor did not initialize m_queued_contexts;
	  initializes now all members explicitly

2006-06-06	Klaus Triendl <klaus@triendl.eu>

	* improved example "ipresolver", now tells the user if the resolver thread
	  is blocking and can't be finished because it still tries to resolve
	  something

2006-06-11 Klaus Triendl <klaus@triendl.eu>

	* removed parameter bSync from threadable::finish()
	* threadable::finish() is now threadsafe, the first thread aquiring the 
	  mutex joins the thread
	* made lockable non-copyable

2006-07-02 Klaus Triendl <klaus@triendl.eu>

	* added template struct `auto_tunneler" and template struct 
	  `is_functor_tunneled" to facilitate auto tunneling of functors at compile
	  time
	* redesigned threadable; follow Tim's suggestion and provide virtual methods 
	  on_startup() and on_cleanup() instead of letting derived classes override 
	  on_run() and on_finish()
	* complete rework of the documentation for threadable
	* cleaned up the ipresolver example and added it to the reference
	  documentation
	* follow Tim's advice to use glib atomic operations for counting the 
	  tunnel contexts (messages) in the dispatcher queue in favor of using
	  sig_atomic_t that is not garanteed to be threadsafe on all platforms;
	  thus removing dependency to <signal.h>

2006-07-16 Klaus Triendl <klaus@triendl.eu>

	* added template functor `request" to facilitate message dispatching when
	  "requesting" a threadable to do something.

2006-07-22 Klaus Triendl <klaus@triendl.eu>

	* added class noncopyable (namespace internal) to facilitate the 
	  non-copyable idiom
	* remove threadable::on_finish() as handler for the `finish" message;
	  finish() now uses a composite functor calling quit() on the mainloop

2006-07-23 Klaus Triendl <klaus@triendl.eu>

	* improved macros: 
	    - using defines _R_, _P_ and _T_ (sigc::type_trait<>::take, 
		  sigc::type_trait<>::pass, sigc::type_trait<>::type)
		- simplified and generalized creation of tunnel contexts
	* improved documentation for tunnel contexts
	* bugfix (compile time): synchronous tunnel contexts did not define correct 
	  std::auto_ptr template for self-deletion thus resulting in a compiler 
	  error when constructing the std::auto_ptr with `this"
	* asynchronous tunnel contexts now also use a std::auto_ptr for 
	  self-deletion; this ensures proper deletion of the tunnel context even 
	  when exceptions are thrown.

2006-08-18 Klaus Triendl <klaus@triendl.eu>

	* renamed referenced_dispatchable to shared_dispatchable
	* renamed open_tunnel_sync() to open_sync_tunnel()
	* removed dependency to boost::shared_ptr; I've implemented my own sharing
	  mechanism for the dispatchable's dispatcher pointer

2006-08-26 Klaus Triendl <klaus@triendl.eu>

	* added request_f (request functor) to facilitate sending messages to a 
	  thread
	* reengineered completely the signal handling and implementation: 
	  + removed SignalBase, Signal, SignalBaseReference, SignalReference
	  + added signal_f_base, signal_f, signal_base, signal, signal_source_base, 
	    signal_source_threadprivate, signal_source_obj_mem, signal_source_slot, 
		ConnectionHandler, TypedConnectionHandler
	  + 1) signal_f acts as a mediator between two threads such that the client 
	       thread gets a threadsafe copy of a server thread's signal
		2) a signal_source_base abstracts completely the origin of a server
		   thread's signal, thus enabling the programmer to specify different
		   sources for a signal.
	  + GlibX::Signal specialization for Glib::SignalIdle;
	    SignalTimeout, SignalIO and SignalProxy will follow soon;
		allow a programmer to connect a client thread with these signals of a 
		server thread
	* improved locking facilities:
	  + renamed lockable to lockable_base, lockable_type to lockable
	  + made a lockable's encapsulated type volatile
	  + a lockable is now template specialized for a "lock", e.g. a mutex or a
	    read/write lock;
		this approach generalizes programming with locks and locked types;
		there are predefined lockables specialized for a specific lock:
		static_mutex_lockable, mutex_lockable, static_rw_lockable, rw_lockable, 
		static_recmutex_lockable, recmutex_lockable
	  + added classes Locker and ConstLocker to lock a lockable, nonvolatile 
	    access to the locked type with unlock()
	* tunnel_context now throws exception `bad_dispatcher" in case that the
	  pointer to the dispatcher is invalid (message cannot get dispatched to 
	  the server thread)
	* added concept classes:
	  noncopyable, nonheapcreatable, noninstantiatible, operator_new

2006-08-26 Klaus Triendl <klaus@triendl.eu>

	* renamed managed_dispatchable to threadmanaged_dispatchable, much clearer
	* splitted auto_dispatchable: auto_dispatchable is now a baseclass with
	  protected access, added glib_auto_dispatchable that does the right job:
	  creating a GlibDispatcher
	* Dispatcher must be created and destroyed by the thread in who's context
	  the dispatcher is acting
	* Dispatcher now inherits from operator_new to ensure heap allocation 
	  happens in the glibmmx module (needed for windows)

2006-09-02 Klaus Triendl <klaus@triendl.eu>

	* added deadlock detection: throw an exception if a thread sends a 
	  synchronous message to itself or to a thread that in turn has a 
	  synchronous message pending to the sending thread

2006-09-03 Klaus Triendl <klaus@triendl.eu>

	* added GlibX::Signal specialization for SignalTimeout, SignalIO and 
	  SignalChildWatch

2006-09-03 Klaus Triendl <klaus@triendl.eu>

	* little bit of documentation

2006-09-12 Klaus Triendl <klaus@triendl.eu>

	* GlibX::Signal now can be template specialized for a group of signal types:
	  Glib::SignalNormalProxy and sigc::signal_base derived signals and 
	  irrelevant grouping;
	  This allows you to connect to Glib::SignalProxyN signals, e.g. to a 
	  Gtk::Button::signal_clicked() if that signal is exposed by a signal 
	  functor (signal_f)

2006-09-14 Klaus Triendl <klaus@triendl.eu>

	* small bugfixes for some signal_f ctors
	* object instances for signal sources can now be late bound; This is 
	  achieved by pointer references to objects ( T_obj*& )

2006-09-21 Klaus Triendl <klaus@triendl.eu>

	* added internal::shared_ptr<T> (unwillingly but necessarily)
	* Signal<T>::connect* methods are now asynchronous; this is achieved by
	  sharing a pointer to a connection (internal::shared_ptr<sigc::connection*>) 
	  that is transferred to the server thread.
	  The actual sigc::connection to which the shared connection pointer points 
	  to is then created later by the server thread.
	  I call this "late binding" of an instance to a shared pointer 
	  This means effectively that connecting to a signal is now asynchronous.

2006-09-25 Klaus Triendl <klaus@triendl.eu>

	* signal_f<T>::operator () is now asynchronous; this is achieved by
	  sharing a pointer to a signal source (internal::shared_ptr<signal_source_base*>) 
	  that is transferred to the server thread.
	  The actual signal source to which the shared signal source pointer points
	  to is also transferred to the server thread where it is then bound to 
	  the server thread's lifetime
	  I call this "late binding" of an instance to a shared pointer.
	  This means effectively that getting a threadsafe representation of a 
	  signal is now asynchronous.

2006-10-18 Klaus Triendl <klaus@triendl.eu>

	* remove constraint_toplevel_functor() (replaced by SIGX_STATIC_ASSERT)
	* add is_or_adapts_slot to find out at compile time whether a functor is 
	  a slot itself or contains a functor adapting a slot
	* add SIGX_STATIC_ASSERT to issue clearer compile time error messages
	  at function scope
	* Signal<T>::connect and Signal<T>::connect_notify now ensure with 
	  SIGX_STATIC_ASSERT that no slots are connected

2006-10-21 Klaus Triendl <klaus@triendl.eu>

	* Thanks to Tim's idea (PDB::Dispatcher::run()), glib_threadable::run() 
	  now blocks until the thread is in a running state

2006-10-21 Klaus Triendl <klaus@triendl.eu>

	* If a thread sends a synchronous message to itself then this case is 
	  detected as a deadlock detection, too
	* request functors now don't accept slots, adapted slots and tunnel 
	  functors that are not toplevel

2007-01-06 Klaus Triendl <klaus@triendl.eu>

	* renamed namespace GlibX to sigx
	* added export/import declaration to classes exported from the DLL on windows
	* created a solution for MSVC++ 2005:
	  - the library builds now successfully on windows
	  - ipresolver example runs on windows
	  - tests compile and run on windows
	  - macro files compile to hpp files
	* added sigxconfig.hpp
	* scons doesn't doesn't substitute anymore macros in *.hpp.in files, rather m4 
	  creates the hpp-files directly (added a macro definition for the copyright)
	* put tunnel_functor's members into tunnel_base
	* added sigxconfig.hpp (has still to be done for linux) to get machine and sigc++ configuration
	* added validity tracking for tunnel functors (message is not dispatched anymore if dispatchable of callback goes out of scope; also, all connected tunnel functors are d
	* renamed sigx::signal to sigx::signal_wrapper
	* now, sigx::connectionS share a pointer to a sigc::connection (the sigc::connection lives in the context of the server thread)
	* now, sigx::signal_wrapperS share the signal source (that accesses a signal living in the context of the server thread)

2007-01-06 Klaus Triendl <klaus@triendl.eu>

	* added visual c++ project test_static_assert
	* tunnel callbacks are now invalidated when dispatcher goes out of scope, not when the dispatchable dies
	* signal_f takes a sigc::(const_)reference_wrapper for late binding objects to pointer variables

2007-01-08 Klaus Triendl <klaus@triendl.eu>

	* SConstruct tests for available std::tr1::shared_ptr or boost::shared_ptr; 
	  they take precedence over the sigx::internal::shared_ptr because they 
	  are perfectly configured for many environments

2007-07-22 Klaus Triendl <klaus@triendl.eu>

	* renamed directories and scons variables from "glibmmx" to "sigx"
	* added threadable

2008-03/2008-04 Klaus Triendl <klaus@triendl.eu>

	* changed validity tracking in tunnel functors:
	  - must not activated anymore by default: tunnel_functorS are not subject to validity tracking otherwise explicitly requested
	    (yielded problems with request_f and "on-the-fly" tunnels)
	  - sigx::signal_wrapper::connect() activates it explicitly on tunnel_functorS
	* added solution for MSVC++ 2008 (note however that heap debug assertions happen at the end of the program when executing example and test programs)
	* renamed *.hpp to *.h
	* added sigx::ref, like sigc::ref but overloaded for reference wrappers
	* added make_new_tunnel_context, enables us to let the compiler deduce the correct functor for a full tunnel_context specialization
	* refactored tunnel_context:
	  - specialize template on functor type instead of argument types, eases the creation of tunnel_contextS, less specializations
	  - no need for tunnel_context.h.m4
	* refactored tunnel_functor:
	  - use sigc::bind together with sigx::ref for easy creation of tunnel_contextS
	* removed shared_ptr.h, shared_ptr functionality is too complex and tr1 is almost at hand or easily available in boost
	* require availability of <tr1/memory> (shared_ptr)
	* require availability of boost (needed for mpl)
	* made scons target "tests"
	* made scons target "examples"

2008-03/2008-04-12 Klaus Triendl <klaus@triendl.eu>

	* renamed sigx::connection to sigx::connection_wrapper to be in sync with signal_wrapper
	* added test program test_sync_async_argument_passing
	* derive sigx::request_f protected from sigc::slot and make sigc::slot::operator() explicitly public with a using directive

2008-03/2008-04-13 Klaus Triendl <klaus@triendl.eu>

	* renamed sigx::threadmanaged_dispatchable to sigx::manual_dispatchable

2008-05-05 Klaus Triendl <klaus@triendl.eu>

	* sigx::connection_wrapper doesn't cache the connection status anymore
	* ... which means one variable less, leading to a bugfix: connection_wrapper could have leaked (under very low memory conditions, though)
	* for the glib debug message facilities include <glib.h> instead of <glib/gmessages.h>;
	  that's not the nicest way but the official one and fixes a compilation error because gassert() was moved from gmessages.h to gtestutils.h in glib-2.16

2008-05-07 Klaus Triendl <klaus@triendl.eu>

	* bugfix for sigx::connection_wrapper::operator =: prevent self-assignment
	* renamed cpp macro DISPATCH_WITH_FUNCTOR to SIGX_DISPATCH_WITH_FUNCTOR
	* removed unused sigx::conditional_functor, a functor adaptor executing the adapted functor only if a condition evaluates to true
	* consolidated open_tunnel() functions
	* connection_handler now stores plain pointer to a sigc::connection instead of a shared_ptr in the threadspecific connections
	* modifications to the construction script:
	  - pull in the whole environment as construction variables
	  - ... and replace them with any explicitly provided commandline options
	  - write the c++ compiler in use

2008-05-11 Klaus Triendl <klaus@triendl.eu>

	* signal_wrapper<>::connect() now calls new protected template method signal_wrapper_base::connect() that contains the 
	  common code for all signal types
	* bugfix for tunnel_validity_tracker::on_last_functor(): reference count for the validity_trackable was not decreased and 
	  prevented the validity_trackable to be destroyed (memory leaks!)
	* added validity tracking to connection_wrapper such that it can be used even after restarting a threadable
	* when checking in the initial repository msvc test projects were missing in the source tree (though the projects were in the solution)
	* new test program test_connection_handling to test connections after restarting a thread
	* bugfix: dispatchable's ctor could have leaked allocated resources

2008-05-11 Klaus Triendl <klaus@triendl.eu>

	* moved msvc project for sigx++2 into its own subdirectory
	* all intermediate build output goes into a projects $(ConfigurationName) subdirectory
	* all final build output (exe, dll, pdb) goes into $(SolutionDir)$(ConfigurationName) subdirectory
	* added nothrow hint to connection_wrapper's, signal_wrapper_base's, signal_wrapper's, dispatchable's and shared_dispatchable's ctors

2008-12-21 Klaus Triendl <klaus@triendl.eu>

	* tested sigx with libraries and modules from the newest gtkmm (2.14) installer for windows;
	  they added modules linked against the vc9 runtime and the heap problem with gtkmm applications is gone
	* use new MSVC property sheets from the newest gtkmm installer
	* added copyright to .h and .cpp files where it was missing (thx to Chow Loong Jin <hyperair@gmail.com>)
	* updated address of the Free Software Foundation in the copyright (thx to Chow Loong Jin <hyperair@gmail.com>)
	* added DESTDIR to SConstruct, useful for making binary packages (thx to Chow Loong Jin <hyperair@gmail.com>)
	* env.CXXFLAGS got quoted when appending flags (SConstruct), now convert to an array first (thx to Chow Loong Jin <hyperair@gmail.com>)

2008-12-23 Klaus Triendl <klaus@triendl.eu>

	* added precompiled header facilities (__sigx_pchfence__.h, __sigx_pch__.cpp) - pch has a huge impact on compilation time
	* MSVC projects use precompiled headers for sigx to speed up the compilation process
	* changed MSVC projects to match the output file naming convention of the gtkmm installer -> 
	  sigx-vc{80|90}[-d]-2_0.{dll|lib}

2008-12-24 Klaus Triendl <klaus@triendl.eu>

	* modified and added debian/SConscript (thx to Jacek Wolszczak [shutdownrunner@o2.pl])
	* removed old MSVC property sheets

2008-12-29 Klaus Triendl <klaus@triendl.eu>

	* prevent removal of header files generated by the m4 builder and sigx-2.0.pc, sigxconfig.h and docs/Doxyfile generated by the SubstInFile builder by using the scons' NoClean function

2008-12-31 Klaus Triendl <klaus@triendl.eu>

	* added a VersionedSharedLibrary method from Richard Levitte appending the version to the shared library and setting the correct SONAME on various systems
	* Depend on scons >=0.98 (NoClean is available in 0.97, AddMethod in 0.98)

2008-01-04 Klaus Triendl <klaus@triendl.eu>

	* add (this == &other) check to dispatchable::operator =()

2008-01-07 Klaus Triendl <klaus@triendl.eu>

	* increased release version: 2.0.1
	* class operator_new got operator new[]() and operator delete[]()

2008-01-08 Klaus Triendl <klaus@triendl.eu>

	* create and install versioned shared library on posix systems with the soname correctly set
	  (replaced Levitte's VersionedSharedLibrary builder with a combination of the tools 'versionedlibrary' and 'symlink' from the eugene project and my own)

2008-01-18 Klaus Triendl <klaus@triendl.eu>

	* updated sigx.pc.in, contained old library name 'glibmmx' and the old project link
	* add distclean target, removes sigx-2.0.pc, sigxconfig.h, docs/Doxyfile

2009-02-14 Klaus Triendl <klaus@triendl.eu>

* fixed compiler errors when calling g_atomic_pointer_set() on target architectures (e.g. powerpc) not supporting atomic read/write of integer variables: 
  g_atomic_pointer_set is a macro expanding on those architectures to a function where arguments get checked then by the compiler, on other target machines it just expands to a simple assignment