From 9c1ed84d28edfa4a2b5b0a327dccd83d1a1beef8 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Sun, 23 Dec 2012 23:36:00 +0100 Subject: sansapatcher: move sectorbuf pointer into sansa_t structure. Similar as the ipod_t structure for ipodpatcher the sansa_t structure holds all relevant information for sansapatcher. Put the global sansa_sectorbuf pointer into it as well. Change-Id: Iad08ef6aafc49609c3d0d556914246f230ee0179 --- rbutil/rbutilqt/base/autodetection.cpp | 7 +++---- rbutil/rbutilqt/base/bootloaderinstallsansa.cpp | 25 +++++++------------------ rbutil/rbutilqt/base/bootloaderinstallsansa.h | 2 ++ 3 files changed, 12 insertions(+), 22 deletions(-) (limited to 'rbutil/rbutilqt/base') diff --git a/rbutil/rbutilqt/base/autodetection.cpp b/rbutil/rbutilqt/base/autodetection.cpp index 8fba1d8cea..a453fa8d60 100644 --- a/rbutil/rbutilqt/base/autodetection.cpp +++ b/rbutil/rbutilqt/base/autodetection.cpp @@ -167,9 +167,8 @@ bool Autodetection::detect() // try sansapatcher // initialize sector buffer. Needed. - sansa_sectorbuf = NULL; - sansa_alloc_buffer(&sansa_sectorbuf, BUFFER_SIZE); struct sansa_t sansa; + sansa_alloc_buffer(&sansa, BUFFER_SIZE); n = sansa_scan(&sansa); if(n == 1) { qDebug() << "[Autodetect] Sansa found:" << sansa.targetname << "at" << sansa.diskname; @@ -187,8 +186,8 @@ bool Autodetection::detect() else { qDebug() << "[Autodetect] sansapatcher: no Sansa found." << n; } - free(sansa_sectorbuf); - sansa_sectorbuf = NULL; + free(sansa.sectorbuf); + sansa.sectorbuf = NULL; if(m_mountpoint.isEmpty() && m_device.isEmpty() && m_errdev.isEmpty() && m_incompat.isEmpty()) diff --git a/rbutil/rbutilqt/base/bootloaderinstallsansa.cpp b/rbutil/rbutilqt/base/bootloaderinstallsansa.cpp index b05839e297..061ec2578f 100644 --- a/rbutil/rbutilqt/base/bootloaderinstallsansa.cpp +++ b/rbutil/rbutilqt/base/bootloaderinstallsansa.cpp @@ -27,22 +27,17 @@ BootloaderInstallSansa::BootloaderInstallSansa(QObject *parent) : BootloaderInstallBase(parent) { (void)parent; - // initialize sector buffer. sansa_sectorbuf is instantiated by - // sansapatcher. - // The buffer itself is only present once, so make sure to not allocate - // it if it was already allocated. The application needs to take care - // no concurrent (i.e. multiple objects of this class running) requests - // are done. - if(sansa_sectorbuf == NULL) - sansa_alloc_buffer(&sansa_sectorbuf, BUFFER_SIZE); + // initialize sector buffer. The sector buffer is part of the sansa_t + // structure, so a second instance of this class will have its own buffer. + sansa_alloc_buffer(&sansa, BUFFER_SIZE); } BootloaderInstallSansa::~BootloaderInstallSansa() { - if(sansa_sectorbuf) { - free(sansa_sectorbuf); - sansa_sectorbuf = NULL; + if(sansa.sectorbuf) { + free(sansa.sectorbuf); + sansa.sectorbuf = NULL; } } @@ -51,7 +46,7 @@ BootloaderInstallSansa::~BootloaderInstallSansa() */ bool BootloaderInstallSansa::install(void) { - if(sansa_sectorbuf == NULL) { + if(sansa.sectorbuf == NULL) { emit logItem(tr("Error: can't allocate buffer memory!"), LOGERROR); return false; emit done(true); @@ -59,8 +54,6 @@ bool BootloaderInstallSansa::install(void) emit logItem(tr("Searching for Sansa"), LOGINFO); - struct sansa_t sansa; - int n = sansa_scan(&sansa); if(n == -1) { emit logItem(tr("Permission for disc access denied!\n" @@ -95,7 +88,6 @@ bool BootloaderInstallSansa::install(void) */ void BootloaderInstallSansa::installStage2(void) { - struct sansa_t sansa; unsigned char* buf = NULL; unsigned int len; @@ -174,8 +166,6 @@ void BootloaderInstallSansa::installStage3(bool mounted) */ bool BootloaderInstallSansa::uninstall(void) { - struct sansa_t sansa; - emit logItem(tr("Uninstalling bootloader"), LOGINFO); QCoreApplication::processEvents(); @@ -222,7 +212,6 @@ bool BootloaderInstallSansa::uninstall(void) */ BootloaderInstallBase::BootloaderType BootloaderInstallSansa::installed(void) { - struct sansa_t sansa; int num; if(!sansaInitialize(&sansa)) { diff --git a/rbutil/rbutilqt/base/bootloaderinstallsansa.h b/rbutil/rbutilqt/base/bootloaderinstallsansa.h index 55a6341534..40dc89ff25 100644 --- a/rbutil/rbutilqt/base/bootloaderinstallsansa.h +++ b/rbutil/rbutilqt/base/bootloaderinstallsansa.h @@ -21,6 +21,7 @@ #include #include "bootloaderinstallbase.h" +#include "sansapatcher.h" // bootloader installation class for devices handled by sansapatcher. @@ -38,6 +39,7 @@ class BootloaderInstallSansa : public BootloaderInstallBase private: bool sansaInitialize(struct sansa_t *); + struct sansa_t sansa; private slots: void installStage2(void); -- cgit v1.2.3