summaryrefslogtreecommitdiffstats
path: root/kamera/tdeioslave
diff options
context:
space:
mode:
authorSlávek Banko <[email protected]>2013-01-29 20:50:07 +0100
committerSlávek Banko <[email protected]>2013-01-29 20:50:38 +0100
commitd4d1a5808bad1023c8291a52c2143b36f6b41d85 (patch)
treecea31c25494e01818dde626f2bc83553de50ab16 /kamera/tdeioslave
parent0fed03e23520820e85c5a8c0ef1b4e69668274b6 (diff)
downloadtdegraphics-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.cpp44
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
}