I had this problem as well. I think what happens is that GDK stores the current position of the mouse when the movement functions are called. Thus, each time it is called it compares the previous position stored to the current position, and the overwrites the old position. That could be the reason.
What I would suggest is that each time the mouse is initially clicked, you "dump" the mouse move functions into unused variables once, and then mess with the camera angle. It worked for me.
Here is what I am talking about:
bool first=false;
if (mouseRight)
{
if (first==false)
{
first=true;
int dumpA=dbMouseMoveX();
int dumpB=dbMouseMoveY();
}
dbTurnCameraLeft(dbMouseMoveX()/15);
dbPitchCameraDown(-dbMouseMoveY()/15);
mouseRight = false;
}
else
{
first=false;
}
This makes it where the camera moves only as much as you move the mouse after clicking, and not before as well.
The not-so-ultimate Ultimate_H