Krolyxon
Commit 8e5835d

Branches

Refs →

nsxiv8e5835d

Handle image remove/rename while running

Author
Bert
Date
2011-02-09 16:32 +0100
Parent
9be4734
Commit
8e5835d1fd945ee9582aae71b3ee693b6ef46307

+213 −22

6 files changed

  1. D TODO +0 −1
  2. M config.h +1 −1
  3. A icon.h +178 −0
  4. M image.c +23 −14
  5. M image.h +1 −0
  6. M main.c +10 −6
D TODO View
@@ -1 +0,0 @@
1−- update filelist if image is removed or renamed while running
M config.h View
@@ -5,7 +5,7 @@
55
66 /* default color to use for window background: *
77 * (see X(7) "COLOR NAMES" section for valid values) */
8−#define BG_COLOR "#888888"
8+#define BG_COLOR "#999999"
99
1010 /* how should images be scaled when they are loaded?: *
1111 * (also controllable via -d/-s/-Z/-z options) *
A icon.h View
@@ -0,0 +1,178 @@
1+#ifndef ICON_H
2+#define ICON_H
3+
4+static DATA32 icon_warn[] = {
5+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
6+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
7+ 0x00000000, 0xff000000, 0xff000000, 0xff000000, 0x00000000, 0x00000000,
8+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
9+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
10+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
11+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
12+ 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00,
13+ 0xff000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
14+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
15+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
16+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
17+ 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00,
18+ 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff666666, 0x00000000,
19+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
20+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
21+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
22+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000,
23+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000,
24+ 0xff666666, 0xff666666, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
25+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
26+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
27+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
28+ 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
29+ 0xffffff00, 0xffffff00, 0xff000000, 0xff666666, 0xff666666, 0x00000000,
30+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
31+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
32+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
33+ 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00,
34+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff666666,
35+ 0xff666666, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
36+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
37+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
38+ 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00,
39+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
40+ 0xffffff00, 0xff000000, 0xff666666, 0xff666666, 0x00000000, 0x00000000,
41+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
42+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
43+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000,
44+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
45+ 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff666666, 0xff666666,
46+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
47+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
48+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
49+ 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
50+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
51+ 0xff000000, 0xff666666, 0xff666666, 0x00000000, 0x00000000, 0x00000000,
52+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
53+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
54+ 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00,
55+ 0xffffff00, 0xff000000, 0xff000000, 0xff000000, 0xffffff00, 0xffffff00,
56+ 0xffffff00, 0xffffff00, 0xff000000, 0xff666666, 0xff666666, 0x00000000,
57+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
58+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
59+ 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00,
60+ 0xffffff00, 0xffffff00, 0xff000000, 0xff000000, 0xff000000, 0xff000000,
61+ 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000,
62+ 0xff666666, 0xff666666, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
63+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
64+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000,
65+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff000000,
66+ 0xff000000, 0xff000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00,
67+ 0xffffff00, 0xff000000, 0xff666666, 0xff666666, 0x00000000, 0x00000000,
68+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
69+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
70+ 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
71+ 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xffffff00,
72+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff666666,
73+ 0xff666666, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
74+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
75+ 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00,
76+ 0xffffff00, 0xffffff00, 0xff000000, 0xff000000, 0xff000000, 0xff000000,
77+ 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
78+ 0xff000000, 0xff666666, 0xff666666, 0x00000000, 0x00000000, 0x00000000,
79+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
80+ 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00,
81+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff000000,
82+ 0xff000000, 0xff000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00,
83+ 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff666666, 0xff666666,
84+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
85+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000,
86+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
87+ 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xffffff00,
88+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000,
89+ 0xff666666, 0xff666666, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
90+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
91+ 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
92+ 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff000000, 0xff000000,
93+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
94+ 0xffffff00, 0xffffff00, 0xff000000, 0xff666666, 0xff666666, 0x00000000,
95+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
96+ 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00,
97+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000,
98+ 0xff000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
99+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff666666,
100+ 0xff666666, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
101+ 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00,
102+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
103+ 0xffffff00, 0xff000000, 0xff000000, 0xff000000, 0xffffff00, 0xffffff00,
104+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
105+ 0xffffff00, 0xff000000, 0xff666666, 0xff666666, 0x00000000, 0x00000000,
106+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff000000,
107+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
108+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xffffff00,
109+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
110+ 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff666666, 0xff666666,
111+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
112+ 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
113+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
114+ 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
115+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
116+ 0xff000000, 0xff666666, 0xff666666, 0x00000000, 0x00000000, 0x00000000,
117+ 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00,
118+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
119+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
120+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
121+ 0xffffff00, 0xffffff00, 0xff000000, 0xff666666, 0xff666666, 0x00000000,
122+ 0x00000000, 0x00000000, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00,
123+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
124+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff000000,
125+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
126+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000,
127+ 0xff666666, 0xff666666, 0x00000000, 0x00000000, 0x00000000, 0xff000000,
128+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
129+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000,
130+ 0xff000000, 0xff000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00,
131+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
132+ 0xffffff00, 0xff000000, 0xff666666, 0xff666666, 0x00000000, 0x00000000,
133+ 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
134+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
135+ 0xffffff00, 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xffffff00,
136+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
137+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff666666,
138+ 0xff666666, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00,
139+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
140+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff000000,
141+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
142+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
143+ 0xff000000, 0xff666666, 0xff666666, 0x00000000, 0xff000000, 0xffffff00,
144+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
145+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
146+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
147+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
148+ 0xffffff00, 0xffffff00, 0xff000000, 0xff666666, 0xff666666, 0xff666666,
149+ 0xff000000, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
150+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
151+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
152+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
153+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000, 0xff666666,
154+ 0xff666666, 0xff666666, 0x00000000, 0xff000000, 0xffffff00, 0xffffff00,
155+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
156+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
157+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00,
158+ 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xffffff00, 0xff000000,
159+ 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0x00000000, 0x00000000,
160+ 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xff000000,
161+ 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xff000000,
162+ 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xff000000,
163+ 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xff000000, 0xff000000,
164+ 0xff000000, 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666,
165+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xff666666, 0xff666666,
166+ 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666,
167+ 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666,
168+ 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666,
169+ 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666,
170+ 0xff666666, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
171+ 0x00000000, 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666,
172+ 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666,
173+ 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666,
174+ 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666, 0xff666666,
175+ 0xff666666, 0xff666666, 0x00000000, 0x00000000
176+};
177+
178+#endif /* ICON_H */
M image.c View
@@ -16,9 +16,11 @@
1616 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1717 */
1818
19+#include <unistd.h>
1920 #include <Imlib2.h>
2021
2122 #include "config.h"
23+#include "icon.h"
2224 #include "image.h"
2325 #include "options.h"
2426 #include "util.h"
@@ -57,7 +59,7 @@ int _imlib_load_image(const char *filename) {
5759 if (!filename)
5860 return 0;
5961
60− if (!(im = imlib_load_image(filename))) {
62+ if (access(filename, F_OK) || !(im = imlib_load_image(filename))) {
6163 warn("could not open file: %s", filename);
6264 return 0;
6365 }
@@ -77,18 +79,25 @@ int img_check(const char *filename) {
7779 }
7880
7981 int img_load(img_t *img, const char *filename) {
82+ Imlib_Image *im_warn;
83+
8084 if (!img || !filename)
8185 return 0;
8286
8387 if (imlib_context_get_image())
8488 imlib_free_image();
8589
86− if (!_imlib_load_image(filename))
87− return 0;
88−
89− imlib_context_set_anti_alias(img->aa);
90+ if ((img->valid = _imlib_load_image(filename))) {
91+ imlib_context_set_anti_alias(img->aa);
92+ img->scalemode = options->scalemode;
93+ } else {
94+ im_warn = imlib_create_image_using_data(32, 32, icon_warn);
95+ imlib_context_set_image(im_warn);
96+ imlib_image_set_has_alpha(1);
97+ imlib_context_set_anti_alias(0);
98+ img->scalemode = SCALE_DOWN;
99+ }
90100
91− img->scalemode = options->scalemode;
92101 img->re = 0;
93102 img->checkpan = 0;
94103
@@ -194,7 +203,7 @@ void img_render(img_t *img, win_t *win) {
194203 }
195204
196205 int img_fit_win(img_t *img, win_t *win) {
197− if (!img || !win)
206+ if (!img || !img->valid || !win)
198207 return 0;
199208
200209 img->scalemode = SCALE_FIT;
@@ -217,7 +226,7 @@ int img_center(img_t *img, win_t *win) {
217226 }
218227
219228 int img_zoom(img_t *img, float z) {
220− if (!img)
229+ if (!img || !img->valid)
221230 return 0;
222231
223232 z = MAX(z, zoom_min);
@@ -239,7 +248,7 @@ int img_zoom(img_t *img, float z) {
239248 int img_zoom_in(img_t *img) {
240249 int i;
241250
242− if (!img)
251+ if (!img || !img->valid)
243252 return 0;
244253
245254 for (i = 1; i < zl_cnt; ++i) {
@@ -252,7 +261,7 @@ int img_zoom_in(img_t *img) {
252261 int img_zoom_out(img_t *img) {
253262 int i;
254263
255− if (!img)
264+ if (!img || !img->valid)
256265 return 0;
257266
258267 for (i = zl_cnt - 2; i >= 0; --i) {
@@ -265,7 +274,7 @@ int img_zoom_out(img_t *img) {
265274 int img_move(img_t *img, win_t *win, int dx, int dy) {
266275 int ox, oy;
267276
268− if (!img || !win)
277+ if (!img || !img->valid || !win)
269278 return 0;
270279
271280 ox = img->x;
@@ -280,7 +289,7 @@ int img_move(img_t *img, win_t *win, int dx, int dy) {
280289 }
281290
282291 int img_pan(img_t *img, win_t *win, pandir_t dir) {
283− if (!img || !win)
292+ if (!img || !img->valid || !win)
284293 return 0;
285294
286295 switch (dir) {
@@ -300,7 +309,7 @@ int img_pan(img_t *img, win_t *win, pandir_t dir) {
300309 void img_rotate(img_t *img, win_t *win, int d) {
301310 int ox, oy, tmp;
302311
303− if (!img || !win)
312+ if (!img || !img->valid || !win)
304313 return;
305314
306315 ox = d == 1 ? img->x : win->w - img->x - img->w * img->zoom;
@@ -327,7 +336,7 @@ void img_rotate_right(img_t *img, win_t *win) {
327336 }
328337
329338 void img_toggle_antialias(img_t *img) {
330− if (!img)
339+ if (!img || !img->valid)
331340 return;
332341
333342 img->aa ^= 1;
M image.h View
@@ -38,6 +38,7 @@ typedef struct img_s {
3838 float zoom;
3939 scalemode_t scalemode;
4040
41+ unsigned char valid;
4142 unsigned char re;
4243 unsigned char checkpan;
4344 unsigned char aa;
M main.c View
@@ -128,12 +128,17 @@ void update_title() {
128128 float size;
129129 const char *unit;
130130
131− size = filesize;
132− size_readable(&size, &unit);
131+ if (img.valid) {
132+ size = filesize;
133+ size_readable(&size, &unit);
134+ n = snprintf(win_title, TITLE_LEN, "sxiv: [%d/%d] <%d%%> (%.2f%s) %s",
135+ fileidx + 1, filecnt, (int) (img.zoom * 100.0), size, unit,
136+ filenames[fileidx]);
137+ } else {
138+ n = snprintf(win_title, TITLE_LEN, "sxiv: [%d/%d] broken: %s",
139+ fileidx + 1, filecnt, filenames[fileidx]);
140+ }
133141
134− n = snprintf(win_title, TITLE_LEN, "sxiv: [%d/%d] <%d%%> (%.2f%s) %s",
135− fileidx + 1, filecnt, (int) (img.zoom * 100.0), size, unit,
136− filenames[fileidx]);
137142 if (n >= TITLE_LEN) {
138143 win_title[TITLE_LEN - 2] = '.';
139144 win_title[TITLE_LEN - 3] = '.';
@@ -350,7 +355,6 @@ void on_keypress(XKeyEvent *kev) {
350355 case XK_r:
351356 changed = load_image();
352357 break;
353−;
354358 }
355359
356360 if (changed) {