#include <axwin4/axwin.h>
#include "include/common.hpp"
#include <ipc_proto.hpp>
+#include <algorithm> // min
namespace AxWin {
if( W > 128 )
{
const uint32_t* data32 = static_cast<uint32_t*>(Data);
- for( unsigned int row = 0; row < H; row ++ )
+ const unsigned int rows_per_message = 2048 / W;
+ for( unsigned int row = 0; row < H; row += rows_per_message )
{
CSerialiser message;
message.WriteU8(IPCMSG_PUSHDATA);
message.WriteU16(X);
message.WriteU16(Y+row);
message.WriteU16(W);
- message.WriteU16(1);
+ message.WriteU16( ::std::min(rows_per_message,H-row) );
message.WriteBuffer(W*4, data32);
::AxWin::SendMessage(message);
- data32 += W;
+ data32 += W*rows_per_message;
}
}
else