예제 #1
0
파일: kexcpt.c 프로젝트: fincs/FeOS-v2
void KeExcptHandler(int type, excptArgs_t* args)
{
	word_t cpsr = args->cpsr;
	if (type == Excpt_UndInstr)
		args->pc -= (cpsr & BIT(5)) ? 2 : 4;
	word_t excptPc = args->pc;

	int mode = cpsr&0xF;
	const char* modeName = getModeName(mode);
	int i;
	word_t excptSp, excptLr;
	CpuSaveModeRegs(mode, &excptSp, &excptLr);

	kputs("\n>> KRNLB0RK\n");
	kprintf(">> %s at %p (%s mode)\n", excptTypeString[type], excptPc, modeName);
	for (i = 0; i < 5; i ++)
		kprintf("> r%d  = %x | r%d  = %x\n", i*2, args->reg[i*2], i*2+1, args->reg[i*2+1]);
	kprintf("> r10 = %x | r11 = %x\n", args->reg[10], args->reg[10]);
	kprintf("> r12 = %x | sp  = %x\n", args->reg[12], excptSp);
	kprintf("> lr  = %x | pc  = %x\n", excptLr, excptPc);

	printf("\n<<General Kernel b0rk>>\n");
	printf("Something went horribly wrong and FeOS/High became completely b0rked.\n");
	printf("We apologize for any inconvenience and/or data loss caused by the b0rk.\n");
	printf("Exact details of the b0rk:\n");
	printf(">> %s at %p (%s mode)\n", excptTypeString[type], (void*)excptPc, modeName);
	for (i = 0; i < 5; i ++)
		printf("> r%d  = %x | r%d  = %x\n", i*2, args->reg[i*2], i*2+1, args->reg[i*2+1]);
	printf("> r10 = %x | r11 = %x\n", args->reg[10], args->reg[10]);
	printf("> r12 = %x | sp  = %x\n", args->reg[12], excptSp);
	printf("> lr  = %x | pc  = %x\n", excptLr, excptPc);

	for (;;);
}
예제 #2
0
ShaderDiscardCase* makeDiscardCase (Context& context, DiscardTemplate tmpl, DiscardMode mode)
{
	StringTemplate shaderTemplate(getTemplate(tmpl));

	map<string, string> params;

	switch (mode)
	{
		case DISCARDMODE_ALWAYS:	params["DISCARD"] = "discard";										break;
		case DISCARDMODE_NEVER:		params["DISCARD"] = "if (false) discard";							break;
		case DISCARDMODE_UNIFORM:	params["DISCARD"] = "if (ui_one > 0) discard";						break;
		case DISCARDMODE_DYNAMIC:	params["DISCARD"] = "if (v_coords.x+v_coords.y > 0.0) discard";		break;
		case DISCARDMODE_TEXTURE:	params["DISCARD"] = "if (texture(ut_brick, v_coords.xy*0.25+0.5).x < 0.7) discard";	break;
		default:
			DE_ASSERT(DE_FALSE);
			break;
	}

	string name			= string(getTemplateName(tmpl)) + "_" + getModeName(mode);
	string description	= string(getModeDesc(mode)) + " in " + getTemplateDesc(tmpl);

	return new ShaderDiscardCase(context, name.c_str(), description.c_str(), shaderTemplate.specialize(params).c_str(), getEvalFunc(mode), mode == DISCARDMODE_TEXTURE);
}
예제 #3
0
ThothWindow::ThothWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::ThothWindow)
{
    ui->setupUi(this);
    // ALERT! Use the following code to get keyboard focus at your OpenGL widget
    ui->contextGL->setFocusPolicy(Qt::StrongFocus);
    ui->contextGL->setFocus();
    message = new QLabel(this);
    popUp = new QLabel(this);
    mode = new QLabel(this);
    picked = new QLabel(this);

    ui->statusBar->addWidget(popUp);
    ui->statusBar->addPermanentWidget(picked);
    ui->statusBar->addPermanentWidget(mode);
    ui->statusBar->addPermanentWidget(message);
    mode->setText("Selecting");
    message->setText("No model selected");
    ui->statusBar->showMessage("Ready", 5000);
    //Tree file.

    //treeview of tabs
    TreeFile *m_build = new TreeFile(ui->treeViewBuild, "Build");
    m_buildModel = m_build->getQFileSystemModel();
    TreeFile *m_decorate = new TreeFile(ui->treeViewDecorate, "Decorate");
    m_decorateModel = m_decorate->getQFileSystemModel();
    TreeFile *m_furnish = new TreeFile(ui->treeViewFurnish, "Furnish");
    m_furnishModel = m_furnish->getQFileSystemModel();
    connect(ui->actionSave_project, SIGNAL(triggered()), this, SLOT(actionSave_project_triggered()));
    QTimer *tim = new QTimer(this);
    connect(tim, SIGNAL(timeout()), ui->contextGL, SLOT(updateGL()));
    tim->start(TICK_PER_SECOND);
    connect(tim, SIGNAL(timeout()), ui->contextGL, SLOT(checkActiveModel()));
    connect(ui->SldR, SIGNAL(valueChanged(int)), SLOT(onColorChanged()));
    connect(ui->SldG, SIGNAL(valueChanged(int)), SLOT(onColorChanged()));
    connect(ui->SldB, SIGNAL(valueChanged(int)), SLOT(onColorChanged()));
    onColorChanged();
    connect(CScenary::getInstance(), SIGNAL(setNameModel(string)), SLOT(getModelName(string)));
    connect(RenderManager::GetInstance(), SIGNAL(sendChangeTab()), SLOT(changeTab()));
    RenderManager::GetInstance()->GetRenderMode(EDITOR_2D)->SetCameraProjection(INIT_WIDTH, INIT_HEIGHT);
    connect(this, SIGNAL(changeMouseMove(bool)), RenderManager::GetInstance()->GetRenderMode(EXPLORER), SLOT(setMouseMove(bool)));
    connect(this, SIGNAL(changeCursor(Qt::CursorShape)), ui->contextGL, SLOT(changeCursor(Qt::CursorShape)));
    connect(ui->ColorButton, SIGNAL(clicked(bool)), SLOT(on_colorButton_clicked()));
    connect(this, SIGNAL(newModel(ModelInfo, int)), RenderManager::GetInstance()->GetRenderMode(EXPLORER), SLOT(changeModelTexture(ModelInfo, int)));
    connect(ui->actionOpen_project, SIGNAL(triggered()), this, SLOT(actionOpen_project_triggered()));
    connect(CScenary::getInstance(), SIGNAL(setNameModel(string)), SLOT(getModelName(string)));
    connect(RenderManager::GetInstance(), SIGNAL(sendChangeTab()), SLOT(changeTab()));
    connect(CScenary::getInstance(), SIGNAL(activeFloorChanged(int)), ui->floorBox, SLOT(setValue(int)));
    connect(RenderManager::GetInstance()->GetRenderMode(EDITOR_2D), SIGNAL(changedMode(string)), SLOT(getModeName(string)));
    connect(RenderManager::GetInstance()->GetRenderMode(EDITOR_2D), SIGNAL(pickedInfo(string)), SLOT(getPicked(string)));
    connect(RenderManager::GetInstance()->GetRenderMode(EXPLORER), SIGNAL(pickedInfo(string)), SLOT(getPicked(string)));
    connect(RenderManager::GetInstance()->GetRenderMode(EXPLORER), SIGNAL(setMessage(string, int)), SLOT(getMessage(string, int)));
    connect(RenderManager::GetInstance()->GetRenderMode(EDITOR_2D), SIGNAL(setMessage(string, int)), SLOT(getMessage(string, int)));
    connect(CScenary::getInstance(), SIGNAL(setMessage(string, int)), SLOT(getMessage(string, int)));
}