Q:

Quaterion first person style camera

my update function is adding rotation around the view axis(roll),which is increasing over time.I only want to change the yaw and pitch part.
is my calculation wrong or is it the float accuracy?
m_orientation is my global Quaterion to hold the final rotation.
Q is type of glm::quat.
V is glm::vec3
return [this](glm::vec2 ls, glm::vec2 rs, double dTime) {
    auto rightVec = m_orientation * V(1, 0, 0);
    Q q1 = glm::angleAxis(-rs.x * (float)dTime, V(0,1,0)); // yaw   
    Q q2 = glm::angleAxis(rs.y * (float)dTime, rightVec); // pitch

    auto roll = glm::roll(m_orientation);
    printf("%f\n", roll);

    m_orientation = q1 * m_orientation;
    m_orientation = q2 * m_orientation;

    m_position += m_orientation * V(1, 0, 0) * ls.x * (float)dTime * sensitivity; //sidewards 
    m_position += m_orientation * V(0, 0, -1) * ls.y * (float)dTime * sensitivity; //forwards
    buildViewMatrix();
};

A:

solved with 2 changes
auto q2 = glm::angleAxis(rs.y * (float)dTime, V(1,0,0)); // pitch
m_orientation = q1 * m_orientation * q2;

