1 | Index: previewgenerator.cpp |
---|
2 | =================================================================== |
---|
3 | --- previewgenerator.cpp (revision 9499) |
---|
4 | +++ previewgenerator.cpp (working copy) |
---|
5 | @@ -259,7 +259,22 @@ |
---|
6 | |
---|
7 | QImage small_img = img.smoothScale((int) ppw, (int) pph); |
---|
8 | |
---|
9 | - return small_img.save(filename.ascii(), "PNG"); |
---|
10 | + if (small_img.save(filename.ascii(), "PNG")) |
---|
11 | + { |
---|
12 | + chmod(filename.ascii(), 0666); // Let anybody update it |
---|
13 | + return true; |
---|
14 | + } |
---|
15 | + // Save failed; if file exists, try saving to .new and moving over |
---|
16 | + QString newfile=filename+".new"; |
---|
17 | + if (QFileInfo(filename.ascii()).exists() && |
---|
18 | + small_img.save(newfile.ascii(), "PNG")) |
---|
19 | + { |
---|
20 | + chmod(newfile.ascii(), 0666); |
---|
21 | + rename(newfile.ascii(), filename.ascii()); |
---|
22 | + return true; |
---|
23 | + } |
---|
24 | + // Couldn't save, nothing else I can do? |
---|
25 | + return false; |
---|
26 | } |
---|
27 | |
---|
28 | void PreviewGenerator::LocalPreviewRun(void) |
---|
29 | @@ -275,8 +290,9 @@ |
---|
30 | unsigned char *data = (unsigned char*) |
---|
31 | GetScreenGrab(&programInfo, programInfo.pathname, secsin, |
---|
32 | sz, width, height, aspect); |
---|
33 | - |
---|
34 | - if (SavePreview(programInfo.pathname+".png", data, width, height, aspect)) |
---|
35 | + |
---|
36 | + bool success=SavePreview(programInfo.pathname+".png", data, width, height, aspect); |
---|
37 | + if (success) |
---|
38 | { |
---|
39 | QMutexLocker locker(&previewLock); |
---|
40 | emit previewReady(&programInfo); |
---|
41 | @@ -286,6 +302,10 @@ |
---|
42 | delete[] data; |
---|
43 | |
---|
44 | programInfo.MarkAsInUse(false); |
---|
45 | + if (!success && !localOnly) // local update failed, try remote? |
---|
46 | + { |
---|
47 | + RemotePreviewRun(); |
---|
48 | + } |
---|
49 | } |
---|
50 | |
---|
51 | bool PreviewGenerator::IsLocal(void) const |
---|