/* The log_puts() serves two somewhat different goals: * * - logging * - feeding low-level info to the user in GDB or Telnet * * The latter dictates that strings without newline are not logged, lest there * will be *MANY log lines when sending one char at the time(e.g. * target_request.c). * */ static void log_puts(enum log_levels level, const char *file, int line, const char *function, const char *string) { char *f; if (level == LOG_LVL_OUTPUT) { /* do not prepend any headers, just print out what we were given and return */ fputs(string, log_output); fflush(log_output); return; } f = strrchr(file, '/'); if (f != NULL) file = f + 1; if (strlen(string) > 0) { if (debug_level >= LOG_LVL_DEBUG) { /* print with count and time information */ int64_t t = timeval_ms() - start; #ifdef _DEBUG_FREE_SPACE_ struct mallinfo info; info = mallinfo(); #endif fprintf(log_output, "%s%d %" PRId64 " %s:%d %s()" #ifdef _DEBUG_FREE_SPACE_ " %d" #endif ": %s", log_strings[level + 1], count, t, file, line, function, #ifdef _DEBUG_FREE_SPACE_ info.fordblks, #endif string); } else { /* if we are using gdb through pipes then we do not want any output * to the pipe otherwise we get repeated strings */ fprintf(log_output, "%s%s", (level > LOG_LVL_USER) ? log_strings[level + 1] : "", string); } } else { /* Empty strings are sent to log callbacks to keep e.g. gdbserver alive, here we do *nothing. */ } fflush(log_output); /* Never forward LOG_LVL_DEBUG, too verbose and they can be found in the log if need be */ if (level <= LOG_LVL_INFO) log_forward(file, line, function, string); }
/* * ex_undo -- u * Undo the last change. * * PUBLIC: int ex_undo __P((SCR *, EXCMD *)); */ int ex_undo(SCR *sp, EXCMD *cmdp) { EXF *ep; MARK m; /* * !!! * Historic undo always set the previous context mark. */ m.lno = sp->lno; m.cno = sp->cno; if (mark_set(sp, ABSMARK1, &m, 1)) return (1); /* * !!! * Multiple undo isn't available in ex, as there's no '.' command. * Whether 'u' is undo or redo is toggled each time, unless there * was a change since the last undo, in which case it's an undo. */ ep = sp->ep; if (!F_ISSET(ep, F_UNDO)) { F_SET(ep, F_UNDO); ep->lundo = FORWARD; } switch (ep->lundo) { case BACKWARD: if (log_forward(sp, &m)) return (1); ep->lundo = FORWARD; break; case FORWARD: if (log_backward(sp, &m)) return (1); ep->lundo = BACKWARD; break; case NOTSET: abort(); } sp->lno = m.lno; sp->cno = m.cno; return (0); }
CentralWindow::CentralWindow() { drawMutex = new QMutex(); centralwidget = new QWidget(this); centralwidget->setObjectName(QString::fromUtf8("centralwidget")); gridLayout = new QGridLayout(centralwidget); gridLayout->setObjectName(QString::fromUtf8("gridLayout")); Spielfeld = new QFrame(centralwidget); Spielfeld->setObjectName(QString::fromUtf8("Spielfeld")); QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(Spielfeld->sizePolicy().hasHeightForWidth()); Spielfeld->setSizePolicy(sizePolicy); Spielfeld->setFrameShape(QFrame::Panel); Spielfeld->setFrameShadow(QFrame::Raised); Spielfeld->setLineWidth(1); gridLayout_7 = new QGridLayout(Spielfeld); gridLayout_7->setSpacing(0); gridLayout_7->setMargin(0); gridLayout_7->setObjectName(QString::fromUtf8("gridLayout_7")); soccerView = new SoccerView(drawMutex); soccerView->setObjectName(QString::fromUtf8("soccerView")); soccerView->setEnabled(true); gridLayout_7->addWidget(soccerView, 1, 0, 1, 1); gridLayout->addWidget(Spielfeld, 0, 0, 1, 1); this->setCentralWidget(centralwidget); logControl = new QDockWidget(this); logControl->setObjectName(QString::fromUtf8("logControl")); logControl->setEnabled(true); logControl->setMinimumSize(QSize(79, 150)); logControl->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); logControl->setAllowedAreas(Qt::BottomDockWidgetArea); logControlWidget = new QWidget(); logControlWidget->setObjectName(QString::fromUtf8("logControlWidget")); horizontalSlider = new QSlider(logControlWidget); horizontalSlider->setObjectName(QString::fromUtf8("horizontalSlider")); horizontalSlider->setGeometry(QRect(0, 0, 631, 22)); horizontalSlider->setMaximum(1800); horizontalSlider->setPageStep(60); horizontalSlider->setOrientation(Qt::Horizontal); horizontalSlider->setTickPosition(QSlider::TicksAbove); horizontalSlider->setTickInterval(300); log_backward = new QPushButton(logControlWidget); log_backward->setObjectName(QString::fromUtf8("log_backward")); log_backward->setGeometry(QRect(0, 30, 150, 25)); log_pause = new QPushButton(logControlWidget); log_pause->setObjectName(QString::fromUtf8("log_pause")); log_pause->setGeometry(QRect(160, 30, 150, 25)); log_forward = new QPushButton(logControlWidget); log_forward->setObjectName(QString::fromUtf8("log_forward")); log_forward->setGeometry(QRect(320, 30, 150, 25)); log_play = new QPushButton(logControlWidget); log_play->setObjectName(QString::fromUtf8("log_play")); log_play->setGeometry(QRect(480, 30, 150, 25)); log_slower = new QPushButton(logControlWidget); log_slower->setObjectName(QString::fromUtf8("log_slower")); log_slower->setGeometry(QRect(0, 60, 150, 25)); log_speed = new QLabel(logControlWidget); log_speed->setObjectName(QString::fromUtf8("log_speed")); log_speed->setGeometry(QRect(160, 60, 150, 25)); log_speed->setAlignment(Qt::AlignCenter); log_faster = new QPushButton(logControlWidget); log_faster->setObjectName(QString::fromUtf8("log_faster")); log_faster->setGeometry(QRect(320, 60, 150, 25)); log_frame_back = new QPushButton(logControlWidget); log_frame_back->setObjectName(QString::fromUtf8("log_frame_back")); log_frame_back->setGeometry(QRect(0, 90, 150, 25)); log_frameNumber = new QLCDNumber(logControlWidget); log_frameNumber->setObjectName(QString::fromUtf8("log_frameNumber")); log_frameNumber->setGeometry(QRect(160, 90, 150, 25)); log_frameNumber->setNumDigits(7); log_frameNumber->setSegmentStyle(QLCDNumber::Flat); log_frameNumber->setProperty("intValue", QVariant(0)); log_frame_forward = new QPushButton(logControlWidget); log_frame_forward->setObjectName(QString::fromUtf8("log_frame_forward")); log_frame_forward->setGeometry(QRect(320, 90, 150, 25)); log_totalFrames = new QLCDNumber(logControlWidget); log_totalFrames->setObjectName(QString::fromUtf8("log_totalFrames")); log_totalFrames->setGeometry(QRect(480, 90, 150, 25)); log_totalFrames->setAutoFillBackground(false); log_totalFrames->setSmallDecimalPoint(false); log_totalFrames->setNumDigits(7); log_totalFrames->setSegmentStyle(QLCDNumber::Flat); logControl->setWidget(logControlWidget); this->addDockWidget(static_cast<Qt::DockWidgetArea>(8), logControl); logControl->setWindowTitle(QApplication::translate("GuiControls", "LogControl", 0, QApplication::UnicodeUTF8)); log_backward->setText(QApplication::translate("GuiControls", "backward", 0, QApplication::UnicodeUTF8)); log_pause->setText(QApplication::translate("GuiControls", "pause", 0, QApplication::UnicodeUTF8)); log_forward->setText(QApplication::translate("GuiControls", "forward", 0, QApplication::UnicodeUTF8)); log_play->setText(QApplication::translate("GuiControls", "play", 0, QApplication::UnicodeUTF8)); log_slower->setText(QApplication::translate("GuiControls", "slower", 0, QApplication::UnicodeUTF8)); log_speed->setText(QApplication::translate("GuiControls", "Speed", 0, QApplication::UnicodeUTF8)); log_faster->setText(QApplication::translate("GuiControls", "faster", 0, QApplication::UnicodeUTF8)); log_frame_back->setText(QApplication::translate("GuiControls", "frame--", 0, QApplication::UnicodeUTF8)); log_frame_forward->setText(QApplication::translate("GuiControls", "frame++", 0, QApplication::UnicodeUTF8)); logControl->hide(); thread = new ViewUpdateThread(soccerView, drawMutex); //connect all SLOTs and SIGNALs //Slider control connect(thread, SIGNAL(initializeSlider(int,int,int,int,int)), this, SLOT(initializeSlider(int, int, int, int, int))); connect(thread, SIGNAL(update_frame(int)), horizontalSlider, SLOT(setValue(int))); connect(horizontalSlider, SIGNAL(valueChanged(int)), thread->log_control, SLOT(goto_frame(int))); connect(horizontalSlider, SIGNAL(sliderPressed()), thread->log_control, SLOT(log_pause())); connect(horizontalSlider, SIGNAL(sliderReleased()), thread->log_control, SLOT(log_play())); //Buttons for logfile control connect(log_forward, SIGNAL(clicked()), thread->log_control, SLOT(log_forward())); connect(log_play, SIGNAL(clicked()), thread->log_control, SLOT(log_play())); connect(log_backward, SIGNAL(clicked()), thread->log_control, SLOT(log_backward())); connect(log_pause, SIGNAL(clicked()), thread->log_control, SLOT(log_pause())); connect(log_faster, SIGNAL(clicked()), thread->log_control, SLOT(log_faster())); connect(log_slower, SIGNAL(clicked()), thread->log_control, SLOT(log_slower())); connect(log_frame_back, SIGNAL(clicked()), thread->log_control, SLOT(log_frame_back())); connect(log_frame_forward, SIGNAL(clicked()), thread->log_control, SLOT(log_frame_forward())); //Log Control connect(thread, SIGNAL(showLogControl(bool)), logControl, SLOT(setVisible(bool))); //QLCDNumber control connect(thread, SIGNAL(update_frame(int)), log_frameNumber, SLOT(display(int))); connect(thread, SIGNAL(log_size(int)), log_totalFrames, SLOT(display(int))); connect(thread->log_control, SIGNAL(update_speed(QString)), log_speed, SLOT(setText(QString))); thread->start(QThread::NormalPriority); //initialisation for nice start for(int i = 0; i < 14; i++) { soccerView->initView(); soccerView->updateView(); } }