You should initialize all of your bools, if not they'll just have garbage that will most likely be non-zero, which is always true. Just set them all to false.
Your first check is likely to always be true, given that you've got a velocity applied somewhere. You might want to make it " m_pos.y > 0"
if(m_pos.y != 0)inAir = true;
Same with your max 'y' check, for one, you don't even need the '!falling' in there, because you haven't even touched it yet.
if( m_pos.y == 10 ) // Should be if( m_pos.y >= 10 )
Again this check is useless, you've only assigned to 'rising' once and you set it to false when you did that.
Basically everything here that you're doing is wrong or a bad way of doing it.
Those booleans that you have should be static, or preferably a data member in your moving object.
If you do that then you may find this to be a bit easier than you think.