diff --git a/src/Quasar/Wayland/Protocol/Core.hs b/src/Quasar/Wayland/Protocol/Core.hs index eca993f6ebab7fa57d3f37d6833bf128d32e7a6d..25ca5ca5a76a0e5bf14b7e49043baa5518e4c70e 100644 --- a/src/Quasar/Wayland/Protocol/Core.hs +++ b/src/Quasar/Wayland/Protocol/Core.hs @@ -555,13 +555,19 @@ putWaylandBlob blob = do putWord32host (fromIntegral (size + 1)) putByteString blob putWord8 0 - replicateM_ ((4 - (size `mod` 4)) `mod` 4) (putWord8 0) + replicateM_ (padding size) (putWord8 0) skipPadding :: Get () skipPadding = do bytes <- bytesRead - skip $ fromIntegral ((4 - (bytes `mod` 4)) `mod` 4) + skip $ fromIntegral (padding bytes) + +paddedSize :: Integral a => a -> a +paddedSize size = size + padding size + +padding :: Integral a => a -> a +padding size = ((4 - (size `mod` 4)) `mod` 4) sendRawMessage :: MonadCatch m => Put -> ProtocolAction s m ()