diff options
author | Slávek Banko <[email protected]> | 2013-01-29 20:50:07 +0100 |
---|---|---|
committer | Slávek Banko <[email protected]> | 2013-01-29 20:50:38 +0100 |
commit | d4d1a5808bad1023c8291a52c2143b36f6b41d85 (patch) | |
tree | cea31c25494e01818dde626f2bc83553de50ab16 /kamera/tdeioslave | |
parent | 0fed03e23520820e85c5a8c0ef1b4e69668274b6 (diff) | |
download | tdegraphics-d4d1a5808bad1023c8291a52c2143b36f6b41d85.tar.gz tdegraphics-d4d1a5808bad1023c8291a52c2143b36f6b41d85.zip |
Add support for gphoto 2.5
Based on KDE GIT commit cdcf4205
Diffstat (limited to 'kamera/tdeioslave')
-rw-r--r-- | kamera/tdeioslave/kamera.cpp | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/kamera/tdeioslave/kamera.cpp b/kamera/tdeioslave/kamera.cpp index 94250832..234e28dc 100644 --- a/kamera/tdeioslave/kamera.cpp +++ b/kamera/tdeioslave/kamera.cpp @@ -55,11 +55,19 @@ extern "C" { KDE_EXPORT int kdemain(int argc, char **argv); +#ifdef HAVE_GPHOTO2_5 + static void frontendCameraStatus(GPContext *context, const char *status, void *data); + static unsigned int frontendProgressStart( + GPContext *context, float totalsize, const char *status, + void *data + ); +#else static void frontendCameraStatus(GPContext *context, const char *format, va_list args, void *data); static unsigned int frontendProgressStart( GPContext *context, float totalsize, const char *format, va_list args, void *data ); +#endif static void frontendProgressUpdate( GPContext *context, unsigned int id, float current, void *data ); @@ -791,11 +799,11 @@ void KameraProtocol::setHost(const TQString& host, int port, const TQString& use return; } gp_port_info_list_get_info(port_info_list, idx, &port_info); - gp_port_info_list_free(port_info_list); // create a new camera object gpr = gp_camera_new(&m_camera); if(gpr != GP_OK) { + gp_port_info_list_free(port_info_list); error(TDEIO::ERR_UNKNOWN, gp_result_as_string(gpr)); return; } @@ -813,6 +821,8 @@ void KameraProtocol::setHost(const TQString& host, int port, const TQString& use gp_camera_set_port_speed(m_camera, 0); // TODO: the value needs to be configurable kdDebug(7123) << "Opening camera model " << user << " at " << host << endl; + gp_port_info_list_free(port_info_list); + TQString errstr; if (!openCamera(errstr)) { kdDebug(7123) << "Unable to init camera: " << gp_result_as_string(gpr) << endl; @@ -865,10 +875,7 @@ void KameraProtocol::translateFileToUDS(UDSEntry &udsEntry, const CameraFileInfo udsEntry.append(atom); atom.m_uds = UDS_NAME; - if (info.file.fields & GP_FILE_INFO_NAME) - atom.m_str = TQString::fromLocal8Bit(info.file.name); - else - atom.m_str = name; + atom.m_str = name; udsEntry.append(atom); if (info.file.fields & GP_FILE_INFO_SIZE) { @@ -994,10 +1001,16 @@ void frontendProgressUpdate( } unsigned int frontendProgressStart( - GPContext * /*context*/, float totalsize, const char *format, va_list args, + GPContext * /*context*/, float totalsize, +#ifdef HAVE_GPHOTO2_5 + const char *status, +#else + const char *format, va_list args, +#endif void *data ) { KameraProtocol *object = (KameraProtocol*)data; +#ifndef HAVE_GPHOTO2_5 char *status; /* We must copy the va_list to walk it twice, or all hell @@ -1031,14 +1044,26 @@ unsigned int frontendProgressStart( object->infoMessage(TQString::fromLocal8Bit(status)); delete [] status; +#else + /* libgphoto2 2.5 has resolved this already, no need for print */ + object->infoMessage(TQString::fromLocal8Bit(status)); +#endif object->totalSize((int)totalsize); // hack: call slot directly return GP_OK; } // this callback function is activated on every status message from gphoto2 -static void frontendCameraStatus(GPContext * /*context*/, const char *format, va_list args, void *data) -{ +static void frontendCameraStatus( + GPContext * /*context*/, +#ifdef HAVE_GPHOTO2_5 + const char *status, +#else + const char *format, va_list args, +#endif + void *data +) { KameraProtocol *object = (KameraProtocol*)data; +#ifndef HAVE_GPHOTO2_5 char *status; /* We must copy the va_list to walk it twice, or all hell @@ -1071,4 +1096,7 @@ static void frontendCameraStatus(GPContext * /*context*/, const char *format, va #endif object->infoMessage(TQString::fromLocal8Bit(status)); delete [] status; +#else + object->infoMessage(TQString::fromLocal8Bit(status)); +#endif } |