pidgin/gtkmedia.c

branch
vv
changeset 26283
196caad2294d
parent 26282
8677147f42a9
child 26284
5d36c99b8f2d
equal deleted inserted replaced
26282:8677147f42a9 26283:196caad2294d
182 if (media->priv->media) 182 if (media->priv->media)
183 purple_media_hangup(media->priv->media); 183 purple_media_hangup(media->priv->media);
184 return FALSE; 184 return FALSE;
185 } 185 }
186 186
187 static int
188 pidgin_x_error_handler(Display *display, XErrorEvent *event)
189 {
190 const gchar *error_type;
191 switch (event->error_code) {
192 #define XERRORCASE(type) case type: error_type = #type; break
193 XERRORCASE(BadAccess);
194 XERRORCASE(BadAlloc);
195 XERRORCASE(BadAtom);
196 XERRORCASE(BadColor);
197 XERRORCASE(BadCursor);
198 XERRORCASE(BadDrawable);
199 XERRORCASE(BadFont);
200 XERRORCASE(BadGC);
201 XERRORCASE(BadIDChoice);
202 XERRORCASE(BadImplementation);
203 XERRORCASE(BadLength);
204 XERRORCASE(BadMatch);
205 XERRORCASE(BadName);
206 XERRORCASE(BadPixmap);
207 XERRORCASE(BadRequest);
208 XERRORCASE(BadValue);
209 XERRORCASE(BadWindow);
210 #undef XERRORCASE
211 default:
212 error_type = "unknown";
213 break;
214 }
215 purple_debug_error("media", "A %s Xlib error has occurred. "
216 "The program would normally crash now.\n",
217 error_type);
218 return 0;
219 }
220
187 static void 221 static void
188 pidgin_media_init (PidginMedia *media) 222 pidgin_media_init (PidginMedia *media)
189 { 223 {
190 GtkWidget *vbox, *hbox; 224 GtkWidget *vbox, *hbox;
191 media->priv = PIDGIN_MEDIA_GET_PRIVATE(media); 225 media->priv = PIDGIN_MEDIA_GET_PRIVATE(media);
226
227 XSetErrorHandler(pidgin_x_error_handler);
192 228
193 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); 229 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
194 gtk_container_add(GTK_CONTAINER(media), vbox); 230 gtk_container_add(GTK_CONTAINER(media), vbox);
195 231
196 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); 232 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);

mercurial