Example #1
0
TEST_F(Fd, moves_around)
{
    EXPECT_TRUE(fd_is_open(raw_fd));
    mir::Fd fd0(-1);
    fd0 = mir::Fd(raw_fd);
    mir::Fd fd1(std::move(fd0));
    mir::Fd fd2(fd1);

    EXPECT_TRUE(fd_is_open(raw_fd));
    fd1 = mir::Fd(-1);
    EXPECT_TRUE(fd_is_open(raw_fd));
    fd2 = mir::Fd(-1);
    EXPECT_FALSE(fd_is_open(raw_fd));
}
Example #2
0
TEST_F(Fd, closes_when_refcount_is_zero)
{
    EXPECT_TRUE(fd_is_open(raw_fd));
    mir::Fd fd2(-1);
    {
        mir::Fd fd(raw_fd);
        {
            mir::Fd fd1(fd);
            fd2 = fd1;
        }
    }

    EXPECT_TRUE(fd_is_open(raw_fd));
    fd2 = mir::Fd(-1);
    EXPECT_FALSE(fd_is_open(raw_fd));
}
int
main(int argc, char **argv) {
    QApplication a( argc, argv );
    QWidget w;
    QVBoxLayout *layout = new QVBoxLayout(&w);

    // with bug and direct rendering
    FontDisplay fd1(true, true);
    layout->addWidget(&fd1);

    FontDisplay fd2(false, true);
    layout->addWidget(&fd2);

    // with bug and indirect rendering: the real problem
    FontDisplay fd3(true, false);
    layout->addWidget(&fd3);

    FontDisplay fd4(false, false);
    layout->addWidget(&fd4);

    QLineEdit qle;
    layout->addWidget(&qle);

    QObject::connect(&qle, SIGNAL(textChanged(const QString &)),
                     &fd1,  SLOT(setText(const QString &)));
    QObject::connect(&qle, SIGNAL(textChanged(const QString &)),
                     &fd2,  SLOT(setText(const QString &)));
    QObject::connect(&qle, SIGNAL(textChanged(const QString &)),
                     &fd3,  SLOT(setText(const QString &)));
    QObject::connect(&qle, SIGNAL(textChanged(const QString &)),
                     &fd4,  SLOT(setText(const QString &)));

    QHBoxLayout *hlayout = new QHBoxLayout();
    layout->addLayout(hlayout);

    QCheckBox bold("bold");
    hlayout->addWidget(&bold);

    QObject::connect(&bold, SIGNAL(stateChanged(int)),
                     &fd1, SLOT(setBold(bool)));
    QObject::connect(&bold, SIGNAL(stateChanged(int)),
                     &fd2, SLOT(setBold(bool)));
    QObject::connect(&bold, SIGNAL(stateChanged(int)),
                     &fd3, SLOT(setBold(bool)));
    QObject::connect(&bold, SIGNAL(stateChanged(int)),
                     &fd4, SLOT(setBold(bool)));

    QCheckBox italic("italic");
    hlayout->addWidget(&italic);

    QObject::connect(&italic, SIGNAL(stateChanged(int)),
                     &fd1, SLOT(setItalic(bool)));
    QObject::connect(&italic, SIGNAL(stateChanged(int)),
                     &fd2, SLOT(setItalic(bool)));
    QObject::connect(&italic, SIGNAL(stateChanged(int)),
                     &fd3, SLOT(setItalic(bool)));
    QObject::connect(&italic, SIGNAL(stateChanged(int)),
                     &fd4, SLOT(setItalic(bool)));

    QSpinBox *fontsize = new QSpinBox(&w);
    fontsize->setValue(12);
    fontsize->setMinimum(1);
    hlayout->addWidget(fontsize);

    QObject::connect(fontsize, SIGNAL(valueChanged(int)),
                     &fd1, SLOT(setPointSize(int)));
    QObject::connect(fontsize, SIGNAL(valueChanged(int)),
                     &fd2, SLOT(setPointSize(int)));
    QObject::connect(fontsize, SIGNAL(valueChanged(int)),
                     &fd3, SLOT(setPointSize(int)));
    QObject::connect(fontsize, SIGNAL(valueChanged(int)),
                     &fd4, SLOT(setPointSize(int)));

    w.show();
    return a.exec();
}