This update replaces depreciated Gtk1.x symbols with Gtk2.x symbols in
preparation for adding Gtk3 support. These edits aim to be fully
compatible with Gtk2.x, allowing backward compatibility.
The following symbols have been replaced in this commit:
Gtk symbols that have been moved to the Gdk library:
- GtkType -> Gtype
- GTK_CHECK_CAST -> G_TYPE_CHECK_INSTANCE_CAST
- GTK_CHECK_TYPE -> G_TYPE_CHECK_INSTANCE_TYPE
- gtk_signal_connect -> g_signal_connect
- GTK_SIGNAL_FUNC -> G_CALLBACK
- gtk_type_class -> g_type_class_peek
- gtk_type_new-> g_object_new
- GtkTypeInfo -> GtypeInfo (Not required for
g_type_register_static_simple)
- gtk_type_unique -> g_type_register_static_simple
- gdk_draw_image_rgb -> replaced by gdk_cairo_source_pixbuf
NB: This requires porting to use cairo contexts and GdkPixbufs.
The following gtk symbols are changed for their modern equivalent:
- GTK_WIDGET_REALIZED -> gtk_widget_get_realized
- GTK_OBJECT_FLAGS -> gtk_widget_set_realized
Symbols without replacement:
- gtk_range_set_update_policy -> No replacement; as default policy is
set to continuous we can delete this line.
libpng 1.5+ recommends a call to png_set_interlace_handling() if you use
png_read_update_info and png_read_image. It will generate a warning
without it.
OpenCV's automatic builds don't care if you store an unsigned int into
an int, but they don't want you to compare signed with unsigned. Does
that make sense?
cap_qtkit does not work when the capture is run outside of the main
thread.
If the capture is launched in a separate thread, then [NSRunLoop
currentRunLoop] is not the same as in the main thread, and has no timer.
see
https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/F
oundation/Classes/nsrunloop_Class/Reference/Reference.html
"If no input sources or timers are attached to the run loop, this
method exits immediately"
Using usleep() (which I previously proposed, and was reverted) is not a
good alternative, because it may block the GUI.
Here is the new proposed solution:
- create a dummy timer so that runUntilDate does not exit immediately
- simplify the loop by using runUntilDate instead of runMode:beforeDate
- fix potential memory leaks (pointed out by Xcode's static analysis)
- fix init to follow Objective-C guidelines
- fax warnings about conversions from size_t to int
VideoCapture didn't call release method and just ignored the new capture sources.
OpenCV documentation:
bool VideoCapture::open(const string& filename);
bool VideoCapture::open(int device);
The methods first call VideoCapture::release() to close the already opened file or camera.
I've left HAVE_LIBPTHREAD as a CMake variable, since TBB's build depends on it.
Some macros in internal.hpp depended on HAVE_ALLOCA_H, but they were, in turn,
unused, so I've just deleted them all.