comparison mplayer.c @ 28378:45ddc04c30a1

increase max OSD message size limit patch by Scaevolus on irc
author compn
date Sun, 01 Feb 2009 00:00:21 +0000
parents 21504ba0f5d3
children f02a92b6d0a4
comparison
equal deleted inserted replaced
28377:089df060f944 28378:45ddc04c30a1
1323 typedef struct mp_osd_msg mp_osd_msg_t; 1323 typedef struct mp_osd_msg mp_osd_msg_t;
1324 struct mp_osd_msg { 1324 struct mp_osd_msg {
1325 /// Previous message on the stack. 1325 /// Previous message on the stack.
1326 mp_osd_msg_t* prev; 1326 mp_osd_msg_t* prev;
1327 /// Message text. 1327 /// Message text.
1328 char msg[64]; 1328 char msg[128];
1329 int id,level,started; 1329 int id,level,started;
1330 /// Display duration in ms. 1330 /// Display duration in ms.
1331 unsigned time; 1331 unsigned time;
1332 }; 1332 };
1333 1333
1360 msg->prev = osd_msg_stack; 1360 msg->prev = osd_msg_stack;
1361 osd_msg_stack = msg; 1361 osd_msg_stack = msg;
1362 } 1362 }
1363 // write the msg 1363 // write the msg
1364 va_start(va,fmt); 1364 va_start(va,fmt);
1365 r = vsnprintf(msg->msg, 64, fmt, va); 1365 r = vsnprintf(msg->msg, 128, fmt, va);
1366 va_end(va); 1366 va_end(va);
1367 if(r >= 64) msg->msg[63] = 0; 1367 if(r >= 128) msg->msg[127] = 0;
1368 // set id and time 1368 // set id and time
1369 msg->id = id; 1369 msg->id = id;
1370 msg->level = level; 1370 msg->level = level;
1371 msg->time = time; 1371 msg->time = time;
1372 1372
1503 * 1503 *
1504 */ 1504 */
1505 1505
1506 static void update_osd_msg(void) { 1506 static void update_osd_msg(void) {
1507 mp_osd_msg_t *msg; 1507 mp_osd_msg_t *msg;
1508 static char osd_text[64] = ""; 1508 static char osd_text[128] = "";
1509 static char osd_text_timer[64]; 1509 static char osd_text_timer[128];
1510 1510
1511 // we need some mem for vo_osd_text 1511 // we need some mem for vo_osd_text
1512 vo_osd_text = (unsigned char*)osd_text; 1512 vo_osd_text = (unsigned char*)osd_text;
1513 1513
1514 // Look if we have a msg 1514 // Look if we have a msg
1515 if((msg = get_osd_msg())) { 1515 if((msg = get_osd_msg())) {
1516 if(strcmp(osd_text,msg->msg)) { 1516 if(strcmp(osd_text,msg->msg)) {
1517 strncpy((char*)osd_text, msg->msg, 63); 1517 strncpy((char*)osd_text, msg->msg, 127);
1518 if(mpctx->sh_video) vo_osd_changed(OSDTYPE_OSD); else 1518 if(mpctx->sh_video) vo_osd_changed(OSDTYPE_OSD); else
1519 if(term_osd) mp_msg(MSGT_CPLAYER,MSGL_STATUS,"%s%s\n",term_osd_esc,msg->msg); 1519 if(term_osd) mp_msg(MSGT_CPLAYER,MSGL_STATUS,"%s%s\n",term_osd_esc,msg->msg);
1520 } 1520 }
1521 return; 1521 return;
1522 } 1522 }