summaryrefslogtreecommitdiff
path: root/src/gui/preview/PreviewModel.h
diff options
context:
space:
mode:
authorjacob1 <jfu614@gmail.com>2013-07-10 18:53:35 (GMT)
committer jacob1 <jfu614@gmail.com>2013-07-10 18:53:35 (GMT)
commit4f6904b1ed06cf959544f37b936612c5d1a6a08f (patch)
tree49434caf67695b4b13ae8c9729cb044e2a0c7031 /src/gui/preview/PreviewModel.h
parent6e7a5488b561aee4f3b5e3b22ff1b7851c3921ef (diff)
downloadpowder-4f6904b1ed06cf959544f37b936612c5d1a6a08f.zip
powder-4f6904b1ed06cf959544f37b936612c5d1a6a08f.tar.gz
redo threading in PreviewModel so that you don't have to wait for everything to load to quit, and the threads don't access any of PreviewModel's data
Diffstat (limited to 'src/gui/preview/PreviewModel.h')
-rw-r--r--src/gui/preview/PreviewModel.h48
1 files changed, 29 insertions, 19 deletions
diff --git a/src/gui/preview/PreviewModel.h b/src/gui/preview/PreviewModel.h
index 846614c..1918552 100644
--- a/src/gui/preview/PreviewModel.h
+++ b/src/gui/preview/PreviewModel.h
@@ -1,5 +1,5 @@
-#ifndef PREVIEWMODEL_H_
-#define PREVIEWMODEL_H_
+#ifndef PREVIEWMODEL_H
+#define PREVIEWMODEL_H
#include <vector>
#include <iostream>
@@ -14,17 +14,36 @@ using namespace std;
struct SaveData
{
+ SaveData(unsigned char * data_, int len):
+ data(data_),
+ length(len)
+ {
+ }
unsigned char * data;
int length;
};
+struct threadInfo {
+ threadInfo(int saveID_, int saveDate_):
+ threadFinished(true),
+ previewExited(false),
+ saveID(saveID_),
+ saveDate(saveDate_)
+ {
+ }
+ bool threadFinished;
+ bool previewExited;
+ int saveID;
+ int saveDate;
+};
+
class PreviewView;
class PreviewModel {
bool doOpen;
bool commentBoxEnabled;
vector<PreviewView*> observers;
SaveInfo * save;
- vector<char> saveDataBuffer;
+ SaveData *saveData;
std::vector<SaveComment*> * saveComments;
void notifySaveChanged();
void notifySaveCommentsChanged();
@@ -40,26 +59,17 @@ class PreviewModel {
int commentsTotal;
int commentsPageNumber;
- bool updateSaveDataWorking;
- volatile bool updateSaveDataFinished;
+ threadInfo * updateSaveDataInfo;
pthread_t updateSaveDataThread;
- static void * updateSaveDataTHelper(void * obj);
- static void updateSaveDataTDelete(void * arg);
- void * updateSaveDataT();
+ static void * updateSaveDataT(void * obj);
- bool updateSaveInfoWorking;
- volatile bool updateSaveInfoFinished;
+ threadInfo * updateSaveInfoInfo;
pthread_t updateSaveInfoThread;
- static void * updateSaveInfoTHelper(void * obj);
- static void updateSaveInfoTDelete(void * arg);
- void * updateSaveInfoT();
+ static void * updateSaveInfoT(void * obj);
- bool updateSaveCommentsWorking;
- volatile bool updateSaveCommentsFinished;
+ threadInfo * updateSaveCommentsInfo;
pthread_t updateSaveCommentsThread;
- static void * updateSaveCommentsTHelper(void * obj);
- static void updateSaveCommentsTDelete(void * arg);
- void * updateSaveCommentsT();
+ static void * updateSaveCommentsT(void * obj);
public:
PreviewModel();
SaveInfo * GetSave();
@@ -82,4 +92,4 @@ public:
virtual ~PreviewModel();
};
-#endif /* PREVIEWMODEL_H_ */
+#endif /* PREVIEWMODEL_H */