[PATCH] gphoto2.ds: merge ds_ctrl.c into gphoto2_main.c
Marcus Meissner
marcus at jet.franken.de
Sat Dec 6 05:30:35 CST 2008
Hi,
Merged ds_ctrl.c into gphoto2_main.c and marked
the functions as static. Reduces number of exports.
Ciao, Marcus
---
dlls/gphoto2.ds/Makefile.in | 1 -
dlls/gphoto2.ds/ds_ctrl.c | 610 ----------------------------------------
dlls/gphoto2.ds/gphoto2_i.h | 82 ------
dlls/gphoto2.ds/gphoto2_main.c | 520 ++++++++++++++++++++++++++++++++++
4 files changed, 520 insertions(+), 693 deletions(-)
delete mode 100644 dlls/gphoto2.ds/ds_ctrl.c
diff --git a/dlls/gphoto2.ds/Makefile.in b/dlls/gphoto2.ds/Makefile.in
index 3b786cd..5e45e8e 100644
--- a/dlls/gphoto2.ds/Makefile.in
+++ b/dlls/gphoto2.ds/Makefile.in
@@ -9,7 +9,6 @@ EXTRAINCL = @GPHOTO2INCL@
C_SRCS = \
capability.c \
- ds_ctrl.c \
ds_image.c \
gphoto2_main.c \
ui.c
diff --git a/dlls/gphoto2.ds/ds_ctrl.c b/dlls/gphoto2.ds/ds_ctrl.c
deleted file mode 100644
index 9644f8a..0000000
--- a/dlls/gphoto2.ds/ds_ctrl.c
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
- * Copyright 2000 Corel Corporation
- * Copyright 2006 Marcus Meissner
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "config.h"
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <stdlib.h>
-#include <stdio.h>
-#include "twain.h"
-#include "gphoto2_i.h"
-#include "wine/debug.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(twain);
-
-static void
-load_filesystem(const char *folder) {
-#ifdef HAVE_GPHOTO2
- int i, count, ret;
- CameraList *list;
-
- ret = gp_list_new (&list);
- if (ret < GP_OK)
- return;
- ret = gp_camera_folder_list_files (activeDS.camera, folder, list, activeDS.context);
- if (ret < GP_OK) {
- gp_list_free (list);
- return;
- }
- count = gp_list_count (list);
- if (count < GP_OK) {
- gp_list_free (list);
- return;
- }
- for (i = 0; i < count; i++) {
- const char *name;
- struct gphoto2_file *gpfile;
-
- ret = gp_list_get_name (list, i, &name);
- if (ret < GP_OK)
- continue;
- gpfile = malloc(sizeof(struct gphoto2_file));
- if (!gpfile)
- continue;
- TRACE("adding %s/%s\n", folder, name);
- gpfile->folder = strdup(folder);
- gpfile->filename = strdup(name);
- gpfile->download = FALSE;
- list_add_tail( &activeDS.files, &gpfile->entry );
- }
- gp_list_reset (list);
-
- ret = gp_camera_folder_list_folders (activeDS.camera, folder, list, activeDS.context);
- if (ret < GP_OK) {
- FIXME("list_folders failed\n");
- gp_list_free (list);
- return;
- }
- count = gp_list_count (list);
- if (count < GP_OK) {
- FIXME("list_folders failed\n");
- gp_list_free (list);
- return;
- }
- for (i = 0; i < count; i++) {
- const char *name;
- char *newfolder;
- ret = gp_list_get_name (list, i, &name);
- if (ret < GP_OK)
- continue;
- TRACE("recursing into %s\n", name);
- newfolder = malloc(strlen(folder)+1+strlen(name)+1);
- if (!strcmp(folder,"/"))
- sprintf (newfolder, "/%s", name);
- else
- sprintf (newfolder, "%s/%s", folder, name);
- load_filesystem (newfolder); /* recurse ... happily */
- }
- gp_list_free (list);
-#endif
-}
-
-/* DG_CONTROL/DAT_CAPABILITY/MSG_GET */
-TW_UINT16 GPHOTO2_CapabilityGet (pTW_IDENTITY pOrigin, TW_MEMREF pData)
-{
- pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
-
- TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GET\n");
- if (activeDS.currentState < 4 || activeDS.currentState > 7) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
- activeDS.twCC = GPHOTO2_SaneCapability (pCapability, MSG_GET);
- return (activeDS.twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_CAPABILITY/MSG_GETCURRENT */
-TW_UINT16 GPHOTO2_CapabilityGetCurrent (pTW_IDENTITY pOrigin, TW_MEMREF pData)
-{
- pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
-
- TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GETCURRENT\n");
-
- if (activeDS.currentState < 4 || activeDS.currentState > 7) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
- activeDS.twCC = GPHOTO2_SaneCapability (pCapability, MSG_GETCURRENT);
- return (activeDS.twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_CAPABILITY/MSG_GETDEFAULT */
-TW_UINT16 GPHOTO2_CapabilityGetDefault (pTW_IDENTITY pOrigin, TW_MEMREF pData)
-{
- pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
-
- TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GETDEFAULT\n");
- if (activeDS.currentState < 4 || activeDS.currentState > 7) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
- activeDS.twCC = GPHOTO2_SaneCapability (pCapability, MSG_GETDEFAULT);
- return (activeDS.twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_CAPABILITY/MSG_QUERYSUPPORT */
-TW_UINT16 GPHOTO2_CapabilityQuerySupport (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_CAPABILITY/MSG_RESET */
-TW_UINT16 GPHOTO2_CapabilityReset (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
-
- TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_RESET\n");
-
- if (activeDS.currentState < 4 || activeDS.currentState > 7) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
- activeDS.twCC = GPHOTO2_SaneCapability (pCapability, MSG_RESET);
- return (activeDS.twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_CAPABILITY/MSG_SET */
-TW_UINT16 GPHOTO2_CapabilitySet (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
-
- TRACE ("DG_CONTROL/DAT_CAPABILITY/MSG_SET\n");
-
- if (activeDS.currentState != 4) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
- activeDS.twCC = GPHOTO2_SaneCapability (pCapability, MSG_SET);
- return (activeDS.twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_CUSTOMDSDATA/MSG_GET */
-TW_UINT16 GPHOTO2_CustomDSDataGet (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_CUSTOMDSDATA/MSG_SET */
-TW_UINT16 GPHOTO2_CustomDSDataSet (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_AUTOMATICCAPTUREDIRECTORY */
-TW_UINT16 GPHOTO2_AutomaticCaptureDirectory (pTW_IDENTITY pOrigin,
-
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_CHANGEDIRECTORY */
-TW_UINT16 GPHOTO2_ChangeDirectory (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_COPY */
-TW_UINT16 GPHOTO2_FileSystemCopy (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_CREATEDIRECTORY */
-TW_UINT16 GPHOTO2_CreateDirectory (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_DELETE */
-TW_UINT16 GPHOTO2_FileSystemDelete (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_FORMATMEDIA */
-TW_UINT16 GPHOTO2_FormatMedia (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_GETCLOSE */
-TW_UINT16 GPHOTO2_FileSystemGetClose (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_GETFIRSTFILE */
-TW_UINT16 GPHOTO2_FileSystemGetFirstFile (pTW_IDENTITY pOrigin,
-
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_GETINFO */
-TW_UINT16 GPHOTO2_FileSystemGetInfo (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_GETNEXTFILE */
-TW_UINT16 GPHOTO2_FileSystemGetNextFile (pTW_IDENTITY pOrigin,
-
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_FILESYSTEM/MSG_RENAME */
-TW_UINT16 GPHOTO2_FileSystemRename (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_EVENT/MSG_PROCESSEVENT */
-TW_UINT16 GPHOTO2_ProcessEvent (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- TW_UINT16 twRC = TWRC_SUCCESS;
- pTW_EVENT pEvent = (pTW_EVENT) pData;
-
- TRACE("DG_CONTROL/DAT_EVENT/MSG_PROCESSEVENT\n");
-
- if (activeDS.currentState < 5 || activeDS.currentState > 7) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
-
- if (activeDS.pendingEvent.TWMessage != MSG_NULL) {
- pEvent->TWMessage = activeDS.pendingEvent.TWMessage;
- activeDS.pendingEvent.TWMessage = MSG_NULL;
- twRC = TWRC_SUCCESS;
- } else {
- pEvent->TWMessage = MSG_NULL; /* no message to the application */
- twRC = TWRC_NOTDSEVENT;
- }
- activeDS.twCC = TWCC_SUCCESS;
- return twRC;
-}
-
-/* DG_CONTROL/DAT_PASSTHRU/MSG_PASSTHRU */
-TW_UINT16 GPHOTO2_PassThrough (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_PENDINGXFERS/MSG_ENDXFER */
-TW_UINT16 GPHOTO2_PendingXfersEndXfer (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- TW_UINT32 count;
- pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
- struct gphoto2_file *file;
-
- TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_ENDXFER\n");
-
- if (activeDS.currentState != 6 && activeDS.currentState != 7) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
- count = 0;
- LIST_FOR_EACH_ENTRY( file, &activeDS.files, struct gphoto2_file, entry ) {
- if (file->download)
- count++;
- }
- TRACE("count = %ld\n", count);
- pPendingXfers->Count = count;
- if (pPendingXfers->Count != 0) {
- activeDS.currentState = 6;
- } else {
- activeDS.currentState = 5;
- /* Notify the application that it can close the data source */
- activeDS.pendingEvent.TWMessage = MSG_CLOSEDSREQ;
- /* close any Transferring dialog */
- TransferringDialogBox(activeDS.progressWnd,-1);
- activeDS.progressWnd = 0;
- }
- activeDS.twCC = TWCC_SUCCESS;
- return TWRC_SUCCESS;
-}
-
-/* DG_CONTROL/DAT_PENDINGXFERS/MSG_GET */
-TW_UINT16 GPHOTO2_PendingXfersGet (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- TW_UINT32 count;
- pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
- struct gphoto2_file *file;
-
- TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_GET\n");
-
- if (activeDS.currentState < 4 || activeDS.currentState > 7) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
-
- count = 0;
- LIST_FOR_EACH_ENTRY( file, &activeDS.files, struct gphoto2_file, entry ) {
- if (file->download)
- count++;
- }
- TRACE("count = %ld\n", count);
- pPendingXfers->Count = count;
- activeDS.twCC = TWCC_SUCCESS;
- return TWRC_SUCCESS;
-}
-
-/* DG_CONTROL/DAT_PENDINGXFERS/MSG_RESET */
-TW_UINT16 GPHOTO2_PendingXfersReset (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
-
- TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_RESET\n");
-
- if (activeDS.currentState != 6) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
- pPendingXfers->Count = 0;
- activeDS.currentState = 5;
- activeDS.twCC = TWCC_SUCCESS;
- return TWRC_SUCCESS;
-}
-
-/* DG_CONTROL/DAT_PENDINGXFERS/MSG_STOPFEEDER */
-TW_UINT16 GPHOTO2_PendingXfersStopFeeder (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_SETUPFILEXFER/MSG_GET */
-TW_UINT16 GPHOTO2_SetupFileXferGet (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_SETUPXFER/MSG_GETDEFAULT */
-TW_UINT16 GPHOTO2_SetupFileXferGetDefault (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-
-/* DG_CONTROL/DAT_SETUPFILEXFER/MSG_RESET */
-TW_UINT16 GPHOTO2_SetupFileXferReset (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_SETUPFILEXFER/MSG_SET */
-TW_UINT16 GPHOTO2_SetupFileXferSet (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_GET */
-TW_UINT16 GPHOTO2_SetupFileXfer2Get (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_GETDEFAULT */
-TW_UINT16 GPHOTO2_SetupFileXfer2GetDefault (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_RESET */
-TW_UINT16 GPHOTO2_SetupFileXfer2Reset (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_SET */
-TW_UINT16 GPHOTO2_SetupFileXfer2Set (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
-
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_SETUPMEMXFER/MSG_GET */
-TW_UINT16 GPHOTO2_SetupMemXferGet (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- pTW_SETUPMEMXFER pSetupMemXfer = (pTW_SETUPMEMXFER)pData;
-
- TRACE("DG_CONTROL/DAT_SETUPMEMXFER/MSG_GET\n");
- /* Guessing */
- pSetupMemXfer->MinBufSize = 20000;
- pSetupMemXfer->MaxBufSize = 80000;
- pSetupMemXfer->Preferred = 40000;
- return TWRC_SUCCESS;
-}
-
-/* DG_CONTROL/DAT_STATUS/MSG_GET */
-TW_UINT16 GPHOTO2_GetDSStatus (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- pTW_STATUS pSourceStatus = (pTW_STATUS) pData;
-
- TRACE ("DG_CONTROL/DAT_STATUS/MSG_GET\n");
- pSourceStatus->ConditionCode = activeDS.twCC;
- /* Reset the condition code */
- activeDS.twCC = TWCC_SUCCESS;
- return TWRC_SUCCESS;
-}
-
-/* DG_CONTROL/DAT_USERINTERFACE/MSG_DISABLEDS */
-TW_UINT16 GPHOTO2_DisableDSUserInterface (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- TRACE ("DG_CONTROL/DAT_USERINTERFACE/MSG_DISABLEDS\n");
-
- if (activeDS.currentState != 5) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
- activeDS.currentState = 4;
- activeDS.twCC = TWCC_SUCCESS;
- return TWRC_SUCCESS;
-}
-
-/* DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDS */
-TW_UINT16 GPHOTO2_EnableDSUserInterface (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- pTW_USERINTERFACE pUserInterface = (pTW_USERINTERFACE) pData;
-
- load_filesystem("/");
-
- TRACE ("DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDS\n");
- if (activeDS.currentState != 4) {
- FIXME("Sequence error %d\n", activeDS.currentState);
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
- activeDS.hwndOwner = pUserInterface->hParent;
- if (pUserInterface->ShowUI)
- {
- BOOL rc;
- activeDS.currentState = 5; /* Transitions to state 5 */
- rc = DoCameraUI();
- if (!rc) {
- activeDS.pendingEvent.TWMessage = MSG_CLOSEDSREQ;
- } else {
- /* FIXME: The GUI should have marked the files to download... */
- activeDS.pendingEvent.TWMessage = MSG_XFERREADY;
- activeDS.currentState = 6; /* Transitions to state 6 directly */
- }
- } else {
- /* no UI will be displayed, so source is ready to transfer data */
- activeDS.pendingEvent.TWMessage = MSG_XFERREADY;
- activeDS.currentState = 6; /* Transitions to state 6 directly */
- }
- activeDS.hwndOwner = pUserInterface->hParent;
- activeDS.twCC = TWCC_SUCCESS;
- return TWRC_SUCCESS;
-}
-
-/* DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDSUIONLY */
-TW_UINT16 GPHOTO2_EnableDSUIOnly (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- TRACE("DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDSUIONLY\n");
-
- if (activeDS.currentState != 4) {
- activeDS.twCC = TWCC_SEQERROR;
- return TWRC_FAILURE;
- }
- /* FIXME: we should replace xscanimage with our own UI */
- FIXME ("not implemented!\n");
- activeDS.currentState = 5;
- activeDS.twCC = TWCC_SUCCESS;
- return TWRC_SUCCESS;
-}
-
-/* DG_CONTROL/DAT_XFERGROUP/MSG_GET */
-TW_UINT16 GPHOTO2_XferGroupGet (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
- return TWRC_FAILURE;
-}
-
-/* DG_CONTROL/DAT_XFERGROUP/MSG_SET */
-TW_UINT16 GPHOTO2_XferGroupSet (pTW_IDENTITY pOrigin,
- TW_MEMREF pData)
-{
- FIXME ("stub!\n");
- return TWRC_FAILURE;
-}
diff --git a/dlls/gphoto2.ds/gphoto2_i.h b/dlls/gphoto2.ds/gphoto2_i.h
index 8312815..2af61f4 100644
--- a/dlls/gphoto2.ds/gphoto2_i.h
+++ b/dlls/gphoto2.ds/gphoto2_i.h
@@ -104,88 +104,6 @@ struct tagActiveDS
extern TW_UINT16 GPHOTO2_SaneCapability (pTW_CAPABILITY pCapability, TW_UINT16 action);
/* Implementation of operation triplets
- * From Application to Source (Control Information) */
-TW_UINT16 GPHOTO2_CapabilityGet (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_CapabilityGetCurrent
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_CapabilityGetDefault
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_CapabilityQuerySupport
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_CapabilityReset
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_CapabilitySet
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_CustomDSDataGet
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_CustomDSDataSet
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_AutomaticCaptureDirectory
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_ChangeDirectory
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_FileSystemCopy
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_CreateDirectory
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_FileSystemDelete
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_FormatMedia
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_FileSystemGetClose
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_FileSystemGetFirstFile
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_FileSystemGetInfo
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_FileSystemGetNextFile
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_FileSystemRename
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_ProcessEvent
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_PassThrough
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_PendingXfersEndXfer
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_PendingXfersGet
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_PendingXfersReset
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_PendingXfersStopFeeder
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_SetupFileXferGet
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_SetupFileXferGetDefault
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_SetupFileXferReset
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_SetupFileXferSet
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_SetupFileXfer2Get
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_SetupFileXfer2GetDefault
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_SetupFileXfer2Reset
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_SetupFileXfer2Set
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_SetupMemXferGet
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_GetDSStatus
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_DisableDSUserInterface
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_EnableDSUserInterface
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_EnableDSUIOnly
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_XferGroupGet
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-TW_UINT16 GPHOTO2_XferGroupSet
- (pTW_IDENTITY pOrigin, TW_MEMREF pData);
-
-/* Implementation of operation triplets
* From Application to Source (Image Information) */
TW_UINT16 GPHOTO2_CIEColorGet
(pTW_IDENTITY pOrigin, TW_MEMREF pData);
diff --git a/dlls/gphoto2.ds/gphoto2_main.c b/dlls/gphoto2.ds/gphoto2_main.c
index c023828..d736ef0 100644
--- a/dlls/gphoto2.ds/gphoto2_main.c
+++ b/dlls/gphoto2.ds/gphoto2_main.c
@@ -23,6 +23,10 @@
#include <stdarg.h>
#include <stdio.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#include <stdlib.h>
#include "windef.h"
#include "winbase.h"
@@ -32,6 +36,522 @@
WINE_DEFAULT_DEBUG_CHANNEL(twain);
+
+static void
+load_filesystem(const char *folder) {
+#ifdef HAVE_GPHOTO2
+ int i, count, ret;
+ CameraList *list;
+
+ ret = gp_list_new (&list);
+ if (ret < GP_OK)
+ return;
+ ret = gp_camera_folder_list_files (activeDS.camera, folder, list, activeDS.context);
+ if (ret < GP_OK) {
+ gp_list_free (list);
+ return;
+ }
+ count = gp_list_count (list);
+ if (count < GP_OK) {
+ gp_list_free (list);
+ return;
+ }
+ for (i = 0; i < count; i++) {
+ const char *name;
+ struct gphoto2_file *gpfile;
+
+ ret = gp_list_get_name (list, i, &name);
+ if (ret < GP_OK)
+ continue;
+ gpfile = malloc(sizeof(struct gphoto2_file));
+ if (!gpfile)
+ continue;
+ TRACE("adding %s/%s\n", folder, name);
+ gpfile->folder = strdup(folder);
+ gpfile->filename = strdup(name);
+ gpfile->download = FALSE;
+ list_add_tail( &activeDS.files, &gpfile->entry );
+ }
+ gp_list_reset (list);
+
+ ret = gp_camera_folder_list_folders (activeDS.camera, folder, list, activeDS.context);
+ if (ret < GP_OK) {
+ FIXME("list_folders failed\n");
+ gp_list_free (list);
+ return;
+ }
+ count = gp_list_count (list);
+ if (count < GP_OK) {
+ FIXME("list_folders failed\n");
+ gp_list_free (list);
+ return;
+ }
+ for (i = 0; i < count; i++) {
+ const char *name;
+ char *newfolder;
+ ret = gp_list_get_name (list, i, &name);
+ if (ret < GP_OK)
+ continue;
+ TRACE("recursing into %s\n", name);
+ newfolder = malloc(strlen(folder)+1+strlen(name)+1);
+ if (!strcmp(folder,"/"))
+ sprintf (newfolder, "/%s", name);
+ else
+ sprintf (newfolder, "%s/%s", folder, name);
+ load_filesystem (newfolder); /* recurse ... happily */
+ }
+ gp_list_free (list);
+#endif
+}
+
+/* DG_CONTROL/DAT_CAPABILITY/MSG_GET */
+static TW_UINT16 GPHOTO2_CapabilityGet (pTW_IDENTITY pOrigin, TW_MEMREF pData)
+{
+ pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
+
+ TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GET\n");
+ if (activeDS.currentState < 4 || activeDS.currentState > 7) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+ activeDS.twCC = GPHOTO2_SaneCapability (pCapability, MSG_GET);
+ return (activeDS.twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_CAPABILITY/MSG_GETCURRENT */
+static TW_UINT16 GPHOTO2_CapabilityGetCurrent (pTW_IDENTITY pOrigin, TW_MEMREF pData)
+{
+ pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
+
+ TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GETCURRENT\n");
+
+ if (activeDS.currentState < 4 || activeDS.currentState > 7) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+ activeDS.twCC = GPHOTO2_SaneCapability (pCapability, MSG_GETCURRENT);
+ return (activeDS.twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_CAPABILITY/MSG_GETDEFAULT */
+static TW_UINT16 GPHOTO2_CapabilityGetDefault (pTW_IDENTITY pOrigin, TW_MEMREF pData)
+{
+ pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
+
+ TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GETDEFAULT\n");
+ if (activeDS.currentState < 4 || activeDS.currentState > 7) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+ activeDS.twCC = GPHOTO2_SaneCapability (pCapability, MSG_GETDEFAULT);
+ return (activeDS.twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_CAPABILITY/MSG_QUERYSUPPORT */
+static TW_UINT16 GPHOTO2_CapabilityQuerySupport (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_CAPABILITY/MSG_RESET */
+static TW_UINT16 GPHOTO2_CapabilityReset (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
+
+ TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_RESET\n");
+
+ if (activeDS.currentState < 4 || activeDS.currentState > 7) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+ activeDS.twCC = GPHOTO2_SaneCapability (pCapability, MSG_RESET);
+ return (activeDS.twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_CAPABILITY/MSG_SET */
+static TW_UINT16 GPHOTO2_CapabilitySet (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
+
+ TRACE ("DG_CONTROL/DAT_CAPABILITY/MSG_SET\n");
+
+ if (activeDS.currentState != 4) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+ activeDS.twCC = GPHOTO2_SaneCapability (pCapability, MSG_SET);
+ return (activeDS.twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_CUSTOMDSDATA/MSG_GET */
+static TW_UINT16 GPHOTO2_CustomDSDataGet (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_CUSTOMDSDATA/MSG_SET */
+static TW_UINT16 GPHOTO2_CustomDSDataSet (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_FILESYSTEM/MSG_CHANGEDIRECTORY */
+static TW_UINT16 GPHOTO2_ChangeDirectory (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_FILESYSTEM/MSG_CREATEDIRECTORY */
+static TW_UINT16 GPHOTO2_CreateDirectory (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_FILESYSTEM/MSG_DELETE */
+static TW_UINT16 GPHOTO2_FileSystemDelete (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_FILESYSTEM/MSG_FORMATMEDIA */
+static TW_UINT16 GPHOTO2_FormatMedia (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_FILESYSTEM/MSG_GETCLOSE */
+static TW_UINT16 GPHOTO2_FileSystemGetClose (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_FILESYSTEM/MSG_GETFIRSTFILE */
+static TW_UINT16 GPHOTO2_FileSystemGetFirstFile (pTW_IDENTITY pOrigin,
+
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_FILESYSTEM/MSG_GETINFO */
+static TW_UINT16 GPHOTO2_FileSystemGetInfo (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_FILESYSTEM/MSG_GETNEXTFILE */
+static TW_UINT16 GPHOTO2_FileSystemGetNextFile (pTW_IDENTITY pOrigin,
+
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_FILESYSTEM/MSG_RENAME */
+static TW_UINT16 GPHOTO2_FileSystemRename (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_EVENT/MSG_PROCESSEVENT */
+static TW_UINT16 GPHOTO2_ProcessEvent (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ TW_UINT16 twRC = TWRC_SUCCESS;
+ pTW_EVENT pEvent = (pTW_EVENT) pData;
+
+ TRACE("DG_CONTROL/DAT_EVENT/MSG_PROCESSEVENT\n");
+
+ if (activeDS.currentState < 5 || activeDS.currentState > 7) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+
+ if (activeDS.pendingEvent.TWMessage != MSG_NULL) {
+ pEvent->TWMessage = activeDS.pendingEvent.TWMessage;
+ activeDS.pendingEvent.TWMessage = MSG_NULL;
+ twRC = TWRC_SUCCESS;
+ } else {
+ pEvent->TWMessage = MSG_NULL; /* no message to the application */
+ twRC = TWRC_NOTDSEVENT;
+ }
+ activeDS.twCC = TWCC_SUCCESS;
+ return twRC;
+}
+
+/* DG_CONTROL/DAT_PASSTHRU/MSG_PASSTHRU */
+static TW_UINT16 GPHOTO2_PassThrough (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_PENDINGXFERS/MSG_ENDXFER */
+static TW_UINT16 GPHOTO2_PendingXfersEndXfer (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ TW_UINT32 count;
+ pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
+ struct gphoto2_file *file;
+
+ TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_ENDXFER\n");
+
+ if (activeDS.currentState != 6 && activeDS.currentState != 7) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+ count = 0;
+ LIST_FOR_EACH_ENTRY( file, &activeDS.files, struct gphoto2_file, entry ) {
+ if (file->download)
+ count++;
+ }
+ TRACE("count = %ld\n", count);
+ pPendingXfers->Count = count;
+ if (pPendingXfers->Count != 0) {
+ activeDS.currentState = 6;
+ } else {
+ activeDS.currentState = 5;
+ /* Notify the application that it can close the data source */
+ activeDS.pendingEvent.TWMessage = MSG_CLOSEDSREQ;
+ /* close any Transferring dialog */
+ TransferringDialogBox(activeDS.progressWnd,-1);
+ activeDS.progressWnd = 0;
+ }
+ activeDS.twCC = TWCC_SUCCESS;
+ return TWRC_SUCCESS;
+}
+
+/* DG_CONTROL/DAT_PENDINGXFERS/MSG_GET */
+static TW_UINT16 GPHOTO2_PendingXfersGet (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ TW_UINT32 count;
+ pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
+ struct gphoto2_file *file;
+
+ TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_GET\n");
+
+ if (activeDS.currentState < 4 || activeDS.currentState > 7) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+
+ count = 0;
+ LIST_FOR_EACH_ENTRY( file, &activeDS.files, struct gphoto2_file, entry ) {
+ if (file->download)
+ count++;
+ }
+ TRACE("count = %ld\n", count);
+ pPendingXfers->Count = count;
+ activeDS.twCC = TWCC_SUCCESS;
+ return TWRC_SUCCESS;
+}
+
+/* DG_CONTROL/DAT_PENDINGXFERS/MSG_RESET */
+static TW_UINT16 GPHOTO2_PendingXfersReset (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
+
+ TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_RESET\n");
+
+ if (activeDS.currentState != 6) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+ pPendingXfers->Count = 0;
+ activeDS.currentState = 5;
+ activeDS.twCC = TWCC_SUCCESS;
+ return TWRC_SUCCESS;
+}
+
+/* DG_CONTROL/DAT_SETUPFILEXFER/MSG_GET */
+static TW_UINT16 GPHOTO2_SetupFileXferGet (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_SETUPXFER/MSG_GETDEFAULT */
+static TW_UINT16 GPHOTO2_SetupFileXferGetDefault (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+
+/* DG_CONTROL/DAT_SETUPFILEXFER/MSG_RESET */
+static TW_UINT16 GPHOTO2_SetupFileXferReset (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_SETUPFILEXFER/MSG_SET */
+static TW_UINT16 GPHOTO2_SetupFileXferSet (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_SETUPMEMXFER/MSG_GET */
+static TW_UINT16 GPHOTO2_SetupMemXferGet (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ pTW_SETUPMEMXFER pSetupMemXfer = (pTW_SETUPMEMXFER)pData;
+
+ TRACE("DG_CONTROL/DAT_SETUPMEMXFER/MSG_GET\n");
+ /* Guessing */
+ pSetupMemXfer->MinBufSize = 20000;
+ pSetupMemXfer->MaxBufSize = 80000;
+ pSetupMemXfer->Preferred = 40000;
+ return TWRC_SUCCESS;
+}
+
+/* DG_CONTROL/DAT_STATUS/MSG_GET */
+static TW_UINT16 GPHOTO2_GetDSStatus (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ pTW_STATUS pSourceStatus = (pTW_STATUS) pData;
+
+ TRACE ("DG_CONTROL/DAT_STATUS/MSG_GET\n");
+ pSourceStatus->ConditionCode = activeDS.twCC;
+ /* Reset the condition code */
+ activeDS.twCC = TWCC_SUCCESS;
+ return TWRC_SUCCESS;
+}
+
+/* DG_CONTROL/DAT_USERINTERFACE/MSG_DISABLEDS */
+static TW_UINT16 GPHOTO2_DisableDSUserInterface (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ TRACE ("DG_CONTROL/DAT_USERINTERFACE/MSG_DISABLEDS\n");
+
+ if (activeDS.currentState != 5) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+ activeDS.currentState = 4;
+ activeDS.twCC = TWCC_SUCCESS;
+ return TWRC_SUCCESS;
+}
+
+/* DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDS */
+static TW_UINT16 GPHOTO2_EnableDSUserInterface (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ pTW_USERINTERFACE pUserInterface = (pTW_USERINTERFACE) pData;
+
+ load_filesystem("/");
+
+ TRACE ("DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDS\n");
+ if (activeDS.currentState != 4) {
+ FIXME("Sequence error %d\n", activeDS.currentState);
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+ activeDS.hwndOwner = pUserInterface->hParent;
+ if (pUserInterface->ShowUI)
+ {
+ BOOL rc;
+ activeDS.currentState = 5; /* Transitions to state 5 */
+ rc = DoCameraUI();
+ if (!rc) {
+ activeDS.pendingEvent.TWMessage = MSG_CLOSEDSREQ;
+ } else {
+ /* FIXME: The GUI should have marked the files to download... */
+ activeDS.pendingEvent.TWMessage = MSG_XFERREADY;
+ activeDS.currentState = 6; /* Transitions to state 6 directly */
+ }
+ } else {
+ /* no UI will be displayed, so source is ready to transfer data */
+ activeDS.pendingEvent.TWMessage = MSG_XFERREADY;
+ activeDS.currentState = 6; /* Transitions to state 6 directly */
+ }
+ activeDS.hwndOwner = pUserInterface->hParent;
+ activeDS.twCC = TWCC_SUCCESS;
+ return TWRC_SUCCESS;
+}
+
+/* DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDSUIONLY */
+static TW_UINT16 GPHOTO2_EnableDSUIOnly (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ TRACE("DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDSUIONLY\n");
+
+ if (activeDS.currentState != 4) {
+ activeDS.twCC = TWCC_SEQERROR;
+ return TWRC_FAILURE;
+ }
+ /* FIXME: we should replace xscanimage with our own UI */
+ FIXME ("not implemented!\n");
+ activeDS.currentState = 5;
+ activeDS.twCC = TWCC_SUCCESS;
+ return TWRC_SUCCESS;
+}
+
+/* DG_CONTROL/DAT_XFERGROUP/MSG_GET */
+static TW_UINT16 GPHOTO2_XferGroupGet (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+ return TWRC_FAILURE;
+}
+
+/* DG_CONTROL/DAT_XFERGROUP/MSG_SET */
+static TW_UINT16 GPHOTO2_XferGroupSet (pTW_IDENTITY pOrigin,
+ TW_MEMREF pData)
+{
+ FIXME ("stub!\n");
+ return TWRC_FAILURE;
+}
+
HINSTANCE GPHOTO2_instance;
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
--
1.5.6
More information about the wine-patches
mailing list